From 5337f1e8e00535ecb5f26655e1454d9162faea04 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Thu, 12 Dec 2024 13:56:27 +0100 Subject: [PATCH 01/10] feat: Add front page categories --- apps/directory/public/img/bacterial-blue.png | Bin 0 -> 3670 bytes .../public/img/blood-sample-blue.png | Bin 0 -> 2333 bytes apps/directory/public/img/brain-blue.png | Bin 0 -> 3830 bytes .../directory/public/img/coronavirus-blue.png | Bin 0 -> 4688 bytes apps/directory/public/img/heart-blue.png | Bin 0 -> 3404 bytes apps/directory/public/img/infected-blue.png | Bin 0 -> 3446 bytes apps/directory/public/img/metabolism-blue.png | Bin 0 -> 3895 bytes apps/directory/public/img/pediatrics-blue.png | Bin 0 -> 3840 bytes apps/directory/public/img/ribbon-blue.png | Bin 0 -> 3076 bytes apps/directory/public/img/statistics-blue.png | Bin 0 -> 2702 bytes apps/directory/src/components/ImageCard.vue | 47 +++++ apps/directory/src/views/Landingpage.vue | 199 +++++++++++------- 12 files changed, 175 insertions(+), 71 deletions(-) create mode 100644 apps/directory/public/img/bacterial-blue.png create mode 100644 apps/directory/public/img/blood-sample-blue.png create mode 100644 apps/directory/public/img/brain-blue.png create mode 100644 apps/directory/public/img/coronavirus-blue.png create mode 100644 apps/directory/public/img/heart-blue.png create mode 100644 apps/directory/public/img/infected-blue.png create mode 100644 apps/directory/public/img/metabolism-blue.png create mode 100644 apps/directory/public/img/pediatrics-blue.png create mode 100644 apps/directory/public/img/ribbon-blue.png create mode 100644 apps/directory/public/img/statistics-blue.png create mode 100644 apps/directory/src/components/ImageCard.vue diff --git a/apps/directory/public/img/bacterial-blue.png b/apps/directory/public/img/bacterial-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1bd986079f8ef9684fe943f51b8a3b2dc662e9 GIT binary patch literal 3670 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 literal 0 HcmV?d00001 diff --git a/apps/directory/public/img/heart-blue.png b/apps/directory/public/img/heart-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb5e6270a9ea7953c7385a424c9ac185fffaa5a GIT binary patch literal 3404 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 C8X)=r literal 0 HcmV?d00001 diff --git a/apps/directory/public/img/pediatrics-blue.png b/apps/directory/public/img/pediatrics-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..93444f7635dfea7576ceb0fe455eb75871717708 GIT binary patch literal 3840 zcmaJ^dpwiv|G(~S*i;NDa#|vXFmtwyu@QM3LMf5Mwoqo;ra5mY4@Id|st0>YP8F%1 zghEeJBt|;WS9+p_C&!gTVZZ5l>ihfS*YAFP?(1~FKkv`y`dpv;zOO6G+jGk**>$o2 zfK_g;WFG(^NfQD{X-O5xEZZxoRN2lu*}jauY)&YX1{|r3FdD{<9vV*bp@mZ8546(k z0Dx;p`t4-z^!No&VbD!NmoX-B^caaY0Co;>F`<|tu%;5RGR9fpEv@io z)|h`UZHYA|buZqB?DDTINspi%!Dh$cu~-g=W5O{vVKBq7I9prWWezhlV+q2T6(7wG zjWdpBZTQYWrm-l@$QX7cBO0^J7#hZiWfQa|p8hihddv^nXx6`Bk^~GJ7aD`bnV2q5 z={wNFkEZOZt_pZntUQ@($7sXzCH^iy4|#2M`J!v3#?{yrqhp5^9`w3T#zBt9)# zlI=`MS|3ZUzW~4rNdz4I;`%=J2b~95iFDT%oTu6~y0Izyj8VT0qU-S5qZ9kdh z$O9q#@*OG_tJJNL-jU!F=@)T-^=2d*T(#utJWG;=eT7*B`um7#nq21DQI(3`2_R|T zlF}y>lE~|Z@foImhb}`%?|AUZsYUC69EKPPCVLjnQPYoah4JQ#iq4wwj!6SiI#8Bc zE_cE1(lht%rzXPk)_?+qjG}tUa{xqtBg*uFUwJJW9lZ6X41YS+NEgO?p@lBj2l)d& zJR>N-sB9hZ+mNfH!E4@Q^!D-?7;cw8Qw+xh0cALEv}y%L11M~lw7iPpeDDN(1*;W7 zg~K){P-a8MgXh6UD4?IlrrkmS#T-`|K1~+}v?bCe&*Quh_i>*Xc0*_duq<5({SRN1 z6XxbJec+gism3LBbgnK@ad7t6#m?n}8?on=9$)XT8tK`U*wB$f5vI|!1l9USs{)i|8`D0b_DOU@t0OZRBCEM51RGo~jtIEsei#?~bcM~h_h zVhAVB1zc?26>oT{f=`r*3* zP*>JuBu=455Yv^ZyTK)@U1@n;TH&kFEcX6s(Vg4GsiRhflY-hCMQreX&d@JrDGDV-B)sl$1r=SG|jfOisXgPy2<;8}j`*$}aC zKurX18adS?k09m6XC)<0A8^04J4}Pnv1@O{{iiC`YBtQ^p|BME9kr1b2($;Q;p>BU z9b_M?UFll1?#4dl@hXIrG+?rA4Ne|t>ZWX0?`EF?xk}Qi7y)dZg;IpL^rJuI;*fY< zYHJJUSnVj`XnmDSd$!|fa8hInrvp_rM?M=gbJwM7MlFEr@jPG<)0RzOmvP}pGV0bVH@b#u|tp^xGnN&GIJ_83tztu1e@c2vPL1&K@ zsfk4NEnhZst@oGc`w9b6`N_Lu#D5(+*=7xgai5ATY~y9T4lPZ7NX5Jfs53;9NT1BM z>14#NXgO_{n#z-Wf!J^nw%QVh~8Pdn(0dh%Y4+OQFN=mrzL| z0k`KqN@VKTIHfm{yDo|cO*%}>ZF?d`(I6TFj_YwVg-@>-RF|~KQE60i;Uc;+Q zJtsa^Jy-{Q7xsu#I#2po5GbSP{vzkTkuW%3?s&6RmS9i48k^0h=QcGG zdp5R{5QE2#VMX$Vua(B(Hq}bQsHYBtH(xj3saQyd1TdYqD3G9Q$weUV-cXJ4`S^Mz z_$^OIPp7;_sX%$a@0!>b+0O|21Qi_ErHyM{JF@n-wTV%nFEmSW6|9}> z8JNgq*o{m2(%F3|@Bh>e|C;kx*Ho3WqfDxeAYx#__Gx>&`2Ljt8yRm67+(6cLvtNh z2dqODCuN8YTE^SOy(*Qfq?2?Hfr6?%n2AzjC;*6@Gk7x&2iq^^bLWkRUY4Mqz@UQW z_|q5W^&pHa!qDHW`iXq?@3>ky{DH4fUiIgJ^IU%bZy@rHoaffpjAy|YTS*$Pg*ZFa zEkzcggx}-svsyQcY$)U1m0$ghp+MEgkxS1yx4jR(BLiT?WAb;48{~@kkI~n^YCS<{ zcGsc6m_Vl+Rkl!mMcgKbX=oz$d zbWuCWidTwjDZO6SVpJliT$vlo4FzR&I**RP`Q0TUhwmNU@pwV3=+2cEyikAEzCmXgxtp*Y)+I?N6_b|T3a-l_$a%PnP*$C&2|iy4zRAH z9;Z5|47UyB}@E0}i|$^xBhcfHmNR0f39eXbtHb+o(%Xh8N;VmslCt87s`MDkQ(H!)>0!w)XFc`C1ATD!Ml4< zi=Jd(2K^&Mxv@Tr_PSlWwpu}~)VEcmN)8tQPYw<{p(_FKMk75@AQSM<+pRe=lp)8< z1Uw|jM1ol^+lQ=}N3UNplt1GIfq_@@ss2JWrIZ(@V0Ya*;5Sg%ko53K=g(C1+C95Rg)8!i-t#R!JELbY_6N}jDB=F0x!2EUW*CT!f`%N9MnEqr-4s&*|Z zYfnvXVwI_`fMBCD`LcV`m#V`3Hcj>ckPy*Ji!?cZ?`u<+{LoYxj(SxJf6j z04}P(jS(_dE(6|Mvu7N{jX&`_@JpP)G)~~Vp$Y(JL7^@6N2k-MBe`M3^A-{v)&o&e z>kc5KKx6u#5(B;vaO=V0sUipMK)_7<4gUQm`_VO1ms&f*T70bKm#m9_SRy4Kq?&|L zH4}V#C)t)Vq4@LFyPtY+!X9_`KQ+_f(#TA_wsp(#o(>P-=P-Tix}8>`RM!~_%f8#! zk6Y}Xz;7GNU3cvMD3s>({ZeXK=G66zF;COWMk9AY$_|drXJi$jfrd-QW53P*_YtGo zJ@Qe{6-@J)+4+nPz8?U`|&{M}XQ zR(#6ty+`I0V;4)-N?M$uxP7d#dA69R1C8nHnievwP;z~)jX5##R~l?p^qB5Sp^)Bp zVG!VaQyNk21Xsn(@0m~-q57ileHbsS%-@cz9w4V*uild}oopr%Uk|Ltf-bcDt0&C+ zh)rFeL(Yo~{caouQU_LX2f06Z;Eo6j;ZgAB=_)X2J7`Kp)F1 z>f2@maol>qD^M0O4gB%E>INokVZ=APTiUmPDQKp#V+1Jbe61s3T0vu7(Q^bM=+Kx( zJf~%Yne^L@^F!d;LW&r2gZD+-Z_CCu`oIICeJjegU+}0saga>7^C_V4=MR!YAPej1 z6z9QuCFX6T!zj_-Gq=3TqA{XNM1iq>70+p6q`7mo!;qn$JO!pis3z*N!azJ}a`}CL z>WIhQHo_gMpc4nPyS9a<0oP_k7{E+F%rugq^MRAs6Dlm4ZxW9xD^8qm@x!egSTqWp z;6O6r3*ybO4@;2{n}z}AWx`O6+nGSO zlthE8&J_x~m>LAQf?jzcsA&jhyyoCzD!u|@XVIMcM5m0+qx+Qh)}j6sGTv#_Z0bE^ zF971phoelW!Nu7HE%o;hu`D_X;4>dr5{T@Vl)sRGV0#{2ib~qm4dO1FIg2qcd9;%- zzzdP_jlcXkag>AuP_z`-=yoR7A7C?=>ISE;%rv4n)u^OkAkJeUN|Qrx^MZ~5lrqRJ zi5)*YN2j0`SFsIwO?LsfjJpDKo=PCWqCBMFu^KhCoo&2R-KaH2*K?E@1*kV>6Tp9w zxb7asfn+eCUd%~5Tno6V%}~b4?$ZVhSd1Dd%^%n=$aNTU^mR8^DVnV#YF?#+>u|#C+t+8PnNm zv&NmT3Na}u&}`f?@I}mLmEWEtaqk=+8t-daTZ5f`IiF_XkceF4rXPQD4$U{orTGcL ztufTWpvK9PWbM&iULK?wrxz?@i8%e@yR(3|DLA z_Pd^o<)(ADhCKO(51;0`++4+f^o#ve6w|ACdENQV7wSTH35tV9-koUMz_1)q=I7SF zB(i#ooQbnt&0n6vqOX?PW?MFgdmP@^_5pX+$Fzp(+Nj5@l-kjdu$bIvf5Ev)+vu}< z@IE9RXO!BOeK>n%SB?{ZJGXeSWhJw45QEca84U%r)WPUlnp?V=3^#AB@aFZml2_Ff z)1WWi<=(4D=V)MXNL$3;HXOq~QIX5+wwKV^ z0w+&mWv{$V{hs^{SfTA_3OFZtp0m1FuaQ4VT$bhW-#!On&_cl&rhuDN5D*9t$=;w?XJ_3%cJ|Djx#yhuzTfxz zzVCO=y$4w#0j9=Q#sC1*z%9%$08q#j1+dGISG43p9P;`M_KSqKL2+;@SHcIIW1$#6 zK2XSw=ZEpRv1!R|d`|!j2!ilPI5Ieh#)E`JuHJ?y6N(XU06ZBoF_)Lfhw(A|c!7vc z7`>q);03XCLWEnebFkQ#pCH(hF5z!W4+-a`C-OXE2@Eg1r;LUG2>CD!Bs`>Xad!GpVw$gn&xIjLI0Pjv zRgskd!H_fo661ZhQSc5C0#PiKD&4SX9~?{z6iH#Oh{q3P(g_FxQ6Pv#N=c!(cu?Hj zscybxvY)?)3)R=p)!)zAgX!->^`R{JG9g}ykS~Ild}IIcrF_&^F9o3(iOl3n1iSgM z{t`%tUrd=M_&68WkK(=ajr};6O&|3oA!JDU#(vP~r7c7~`ssVwB8&IJ=Zg@vOAuKP z4#z$Q0D}%>ZVs0{9(iJVR828k#=19_FZsvkXYGg2op(E7WN}91)K>aaUp?lk-{rQQ zrEY7#Ig!1S*`xUW)p=kD@QVi&cmse2W%z%n??%!x~Nchiyvf#R;3j8d9Z&00>Kt}1+f zYfazn;_X+B(B7I3wb4&4Il?`(JrQfIVkX(82FiBh;=W|6;Lwm&qg6Nh@YlZUoB-}P zj}(N|u<nD@v;!o8|`oUN}=~8~p>X)AQ=V7bhUJ;_@e-V?ujA z4Ihcp1;O9vQJSI&fGAW=RUAn6xjQ;zlN^R+4)hMp&lO93K=d@TdUG@5qVwZ3triBY zhgWd&@dw(BRqP%0cP084PJmTt)blV8cFgSHrG+N#2S~*K^wJEgCbD!4H z6!Tv{i|j-NMPk2IJ}sFTO$ux|vI5_{puN*yeA5leRb|hSz<70waO@NFLq|VD9dEEs zXlqI8vIH>g2gjS%tiIy=3yf=6*$4`nAq05eozhLX zfm+V`gjO0uzI9fX&#>9>WM+57{Jk~Vl^HLR$7Pibbwi#tMpff0sShGyQGpZYOa9eXVPst7JfVg@f_GKC8t)LMtAy z^rMhuXkU+B?!UtE*o)v83r$y4_6l3 zp*X*7+J9@p4j>XKLRQ-gxCO~&k2XYm#r2vf$KtILaWAn`cS6m9v8q4wk=61d?j31x>TLoGYSuk!em1N8^s-bd6?(H8=4N9BO?c zs;-z~TO=GqXH=CH{j=`p+AzNo^Ngu$K{rNqBNf_vrRg|ZRsY&gL3wR4e5Yk2;Pm$+ z+U<%6Tbt=JbIKp-L4UTyT6`q0tg!CotE}>*h_Tx^T>uEbF>w9*D(=&~G>eT39X8(9 zRB?OMo7(yEfwGYrqHS3UYAa5a2!;zdEu~r`Z_RGiI2ntazsXQDbeBj#K>@dj1zh2` zpmSDjjB{GBuQX6Js85D(zF<%_JB*&aG&|Hn0yveK!~Jm+MZMAe!<#iXmT}IxFPqD< z0SX;GIOPR(5;N;22j+z_iGPnr#MO;IFt&uXJ&knF&V*$si%BQPqi3zzg_`O)AM@3JUMR5qu~C&$_1MCjyC?DO70Y*3{!< zlPlY)voj$7*Yu>!H$~GMpQ&F@zsj@K3N`lYZN+19IPcFmbTr xK(7_s)$7@9Pj{zVn4uh}|IdfV3^bbPu+HGYcqFO=lC|jb2=ohKR`_so{smZl7Lfn| literal 0 HcmV?d00001 diff --git a/apps/directory/src/components/ImageCard.vue b/apps/directory/src/components/ImageCard.vue new file mode 100644 index 0000000000..ffb88d72df --- /dev/null +++ b/apps/directory/src/components/ImageCard.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/apps/directory/src/views/Landingpage.vue b/apps/directory/src/views/Landingpage.vue index 656c673df6..c70cbe0d7f 100644 --- a/apps/directory/src/views/Landingpage.vue +++ b/apps/directory/src/views/Landingpage.vue @@ -1,25 +1,88 @@ - From adc5b89b9a204f81973e1c37e02386b8eb6543f9 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Thu, 12 Dec 2024 14:22:33 +0100 Subject: [PATCH 02/10] fix: relative img path --- apps/directory/src/views/Landingpage.vue | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/directory/src/views/Landingpage.vue b/apps/directory/src/views/Landingpage.vue index c70cbe0d7f..24bc446c6c 100644 --- a/apps/directory/src/views/Landingpage.vue +++ b/apps/directory/src/views/Landingpage.vue @@ -9,42 +9,42 @@
@@ -53,28 +53,28 @@
From 62c2cab24b011190c41b7951cda44790aeff7579 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Fri, 13 Dec 2024 11:09:51 +0100 Subject: [PATCH 03/10] link cards to filter --- apps/directory/src/components/ImageCard.vue | 8 +++++++- apps/directory/src/views/Landingpage.vue | 16 ++++++++++++++-- apps/directory/vite.config.js | 2 +- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/apps/directory/src/components/ImageCard.vue b/apps/directory/src/components/ImageCard.vue index ffb88d72df..dcf9201037 100644 --- a/apps/directory/src/components/ImageCard.vue +++ b/apps/directory/src/components/ImageCard.vue @@ -13,16 +13,22 @@
-
{{ label }}
+
{{ label }}
+
{{ label }}
diff --git a/apps/directory/src/views/Landingpage.vue b/apps/directory/src/views/Landingpage.vue index 24bc446c6c..475550ceef 100644 --- a/apps/directory/src/views/Landingpage.vue +++ b/apps/directory/src/views/Landingpage.vue @@ -4,13 +4,13 @@

Search the BBMRI-Eric Directory by biobank, samples and collections

-
@@ -18,6 +18,7 @@ label="Cardiovascular Deseases" image-src="img/heart-blue.png" alt-text="bacterial" + :to="{ name: 'catalogue', query: { Categories: 'cardiovascular' } }" />
@@ -25,6 +26,7 @@ label="COVID 19" image-src="img/coronavirus-blue.png" alt-text="coronavirus" + :to="{ name: 'catalogue', query: { Categories: 'covid19' } }" />
@@ -32,6 +34,7 @@ label="Infectious Diseases" image-src="img/infected-blue.png" alt-text="infected" + :to="{ name: 'catalogue', query: { Categories: 'infectious' } }" />
@@ -39,6 +42,7 @@ label="Metabolic Disorders" image-src="img/metabolism-blue.png" alt-text="metabolism" + :to="{ name: 'catalogue', query: { Categories: 'metabolic' } }" />
@@ -46,6 +50,7 @@ label="Nervous System Disorders" image-src="img/brain-blue.png" alt-text="brain" + :to="{ name: 'catalogue', query: { Categories: 'nervous_system' } }" />
@@ -55,6 +60,7 @@ label="Oncology" image-src="img/ribbon-blue.png" alt-text="Oncology" + :to="{ name: 'catalogue', query: { Categories: 'oncology' } }" />
@@ -62,6 +68,7 @@ label="Pediatrics" image-src="img/pediatrics-blue.png" alt-text="pediatrics" + :to="{ name: 'catalogue', query: { Categories: 'paediatrics' } }" />
@@ -69,6 +76,7 @@ label="Population Reference" image-src="img/blood-sample-blue.png" alt-text="Population Reference" + :to="{ name: 'catalogue', query: { Categories: 'population' } }" />
@@ -76,11 +84,14 @@ label="Rare Diseases" image-src="img/statistics-blue.png" alt-text="Rare Diseases" + :to="{ name: 'catalogue', query: { Categories: 'rare_disease' } }" />

pr proceed to the directory without any selection

-
@@ -143,6 +154,7 @@ import { useSettingsStore } from "../stores/settingsStore"; import ImageCard from "../components/ImageCard.vue"; import Button from "../components/Button.vue"; import { computed } from "vue"; +import router from "../router"; const settingsStore = useSettingsStore(); diff --git a/apps/directory/vite.config.js b/apps/directory/vite.config.js index 8501bd1abe..777f4c989b 100644 --- a/apps/directory/vite.config.js +++ b/apps/directory/vite.config.js @@ -5,7 +5,7 @@ import { createHtmlPlugin } from "vite-plugin-html"; import monacoEditorPlugin from "vite-plugin-monaco-editor"; const HOST = - process.env.MOLGENIS_APPS_HOST || "https://bbmri-emx2-test.molgeniscloud.org"; + process.env.MOLGENIS_APPS_HOST || "https://emx2.dev.molgenis.org/"; const SCHEMA = process.env.MOLGENIS_APPS_SCHEMA || "directory"; const opts = { changeOrigin: true, secure: false, logLevel: "debug" }; From 4f7218cd96f976f254d1624bc9ba4c58dbaf49b4 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Fri, 13 Dec 2024 12:33:52 +0100 Subject: [PATCH 04/10] add test --- .../tests/landing-page-cards.spec.ts | 47 +++++++++++++++++++ apps/directory/tests/signin.ts | 11 +++++ 2 files changed, 58 insertions(+) create mode 100644 apps/directory/tests/landing-page-cards.spec.ts create mode 100644 apps/directory/tests/signin.ts diff --git a/apps/directory/tests/landing-page-cards.spec.ts b/apps/directory/tests/landing-page-cards.spec.ts new file mode 100644 index 0000000000..bd9b1e093c --- /dev/null +++ b/apps/directory/tests/landing-page-cards.spec.ts @@ -0,0 +1,47 @@ +import { test, expect } from "@playwright/test"; +import { signin } from "./signin"; + +test("landing page cards set filter", async ({ page }) => { + await page.goto("http://localhost:5173/#/catalogue"); + await signin(page); + await expect( + page.getByRole("main").getByRole("link", { name: "Settings" }) + ).toHaveText("Settings"); + await page.getByRole("main").getByRole("link", { name: "Settings" }).click(); + + await page.getByRole("button", { name: "Landingpage" }).click(); + await expect(page.getByLabel("Landingpage enabled")).toBeVisible(); + + await page.getByLabel("Landingpage enabled").evaluate((e) => { + const checkBox = e as HTMLInputElement; + if (!checkBox.checked) { + checkBox.click(); + } + }); + + await expect( + page.getByRole("link", { name: "Cardiovascular Deseases" }) + ).toBeVisible(); + await page.getByRole("link", { name: "Rare Diseases" }).click(); + await expect(page.getByText("Because you searched for:")).toBeVisible(); + + await expect( + page.getByRole("article").getByText("Rare Diseases") + ).toBeVisible(); + + // disable landing page + await expect( + page.getByRole("main").getByRole("link", { name: "Settings" }) + ).toHaveText("Settings"); + await page.getByRole("main").getByRole("link", { name: "Settings" }).click(); + + await page.getByRole("button", { name: "Landingpage" }).click(); + await expect(page.getByLabel("Landingpage enabled")).toBeVisible(); + + await page.getByLabel("Landingpage enabled").evaluate((e) => { + const checkBox = e as HTMLInputElement; + if (checkBox.checked) { + checkBox.click(); + } + }); +}); diff --git a/apps/directory/tests/signin.ts b/apps/directory/tests/signin.ts new file mode 100644 index 0000000000..c77eac6114 --- /dev/null +++ b/apps/directory/tests/signin.ts @@ -0,0 +1,11 @@ +export async function signin(page) { + await page.getByRole("button", { name: "Sign in" }).click(); + await page.getByPlaceholder("Enter username").click(); + await page.getByPlaceholder("Enter username").fill("admin"); + await page.getByPlaceholder("Password").click(); + await page.getByPlaceholder("Password").fill("admin"); + await page + .getByRole("dialog") + .getByRole("button", { name: "Sign in" }) + .click(); +} From 535f8b20e6e64e9448ae4d6f076736ae8ea42f24 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Fri, 13 Dec 2024 13:37:21 +0100 Subject: [PATCH 05/10] use route function --- apps/directory/tests/landing-page-cards.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/directory/tests/landing-page-cards.spec.ts b/apps/directory/tests/landing-page-cards.spec.ts index bd9b1e093c..96ebad8e0d 100644 --- a/apps/directory/tests/landing-page-cards.spec.ts +++ b/apps/directory/tests/landing-page-cards.spec.ts @@ -1,8 +1,9 @@ import { test, expect } from "@playwright/test"; import { signin } from "./signin"; +import { getAppRoute } from "./getAppRoute"; test("landing page cards set filter", async ({ page }) => { - await page.goto("http://localhost:5173/#/catalogue"); + await page.goto(getAppRoute()); await signin(page); await expect( page.getByRole("main").getByRole("link", { name: "Settings" }) From 450e43c6de376cd88bf7a635a33bf6c7139c0a97 Mon Sep 17 00:00:00 2001 From: connoratrug Date: Mon, 16 Dec 2024 10:13:57 +0100 Subject: [PATCH 06/10] feat: better responsive behaviour, add breakpoints and min width --- apps/directory/src/components/ImageCard.vue | 2 +- apps/directory/src/views/Landingpage.vue | 44 +++++++++++++++------ 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/apps/directory/src/components/ImageCard.vue b/apps/directory/src/components/ImageCard.vue index dcf9201037..87de9215cc 100644 --- a/apps/directory/src/components/ImageCard.vue +++ b/apps/directory/src/components/ImageCard.vue @@ -1,7 +1,7 @@