From 5264b4fe0fe8c30305f7d27fb3e8f2cc02ad5086 Mon Sep 17 00:00:00 2001 From: Sudharaka Date: Tue, 24 Dec 2024 08:30:01 -0800 Subject: [PATCH] feat: add support for missed appointment booking --- .github/workflows/booking.yml | 33 +++++++++++++++++++++++++++++++++ add-to-cart.mjs | Bin 2972 -> 1972 bytes book-missed-slots.mjs | Bin 0 -> 2144 bytes check-for-changes.mjs | Bin 4429 -> 3112 bytes helpers/bookSlot.mjs | Bin 1548 -> 1572 bytes helpers/login.mjs | Bin 1103 -> 2087 bytes helpers/setupUtility.mjs | Bin 0 -> 857 bytes 7 files changed, 33 insertions(+) create mode 100644 book-missed-slots.mjs create mode 100644 helpers/setupUtility.mjs diff --git a/.github/workflows/booking.yml b/.github/workflows/booking.yml index 7765a70..131f8f9 100644 --- a/.github/workflows/booking.yml +++ b/.github/workflows/booking.yml @@ -89,3 +89,36 @@ jobs: with: name: debug-logs-${{ matrix.person }} path: debug-logs-${{ matrix.person }}.tar.gz.gpg + book-missed-slots: + if: always() + needs: add-persons + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Setup project + uses: ./.github/actions/setup-project + with: + DECRYPTION_SECRET: ${{ secrets.DECRYPTION_SECRET }} + + - name: Setup FFmpeg + uses: FedericoCarboni/setup-ffmpeg@v2 + + - name: Run Puppeteer + run: node book-missed-slots.mjs + + - name: Archive Debug Logs + if: always() + continue-on-error: true + run: tar -czvf "debug-logs-book-missed-slots.tar.gz" "screenshot-book-missed-slots.png" "screenshot-final-book-missed-slots.png" "recording-book-missed-slots.webm" + + - name: Encrypt Debug Logs + if: always() + run: gpg --batch -c --passphrase ${{ secrets.ARTIFACT_ENCRYPTION_PASS }} "debug-logs-book-missed-slots.tar.gz" + + - name: Upload Screenshots + uses: actions/upload-artifact@v4 + if: always() + with: + name: debug-logs-book-missed-slots + path: debug-logs-book-missed-slots.tar.gz.gpg diff --git a/add-to-cart.mjs b/add-to-cart.mjs index 81a2b8a111fde439d65983e418824aa3427bc481..dba689c8a8a019d1efe8de4d94ee81fa78efef51 100644 GIT binary patch literal 1972 zcmV;l2TS+>M@dveQdv+`04rS(w0Py-NjmAod_*nCPZ!umX~L$3q123+1hj@{)bL>L zzzz!{F|s@_s{Hv2^HLqL|E}B!y9`uPVveUKJz}$FR44E1+%ssO6X|WwyQzfDdzH;Z z_$0d1MnpbUmH1bq(|ZfeU?4a_`LNXw&~V9SbI5@fLTj}hrGTT@mwj|D?ek9#x&sB@ z#i=$Ql6|D0ipHN3_uiPRieIczA)5cMiRB6{ZamvG4y$#o-HHq+>;qJ|zi6t4roFH1 z#j2xOzBx=UC~_vin4wtz8BFQ{xerhJAb!6NsP^*&_jGmY3EGf11-DPeRqDwN933PV zi=r0*_AJajxwB!E-?y@Mv&JhFU!MRLOBb?Lv#<~Efm&YB_Q6*%R>6&fgYb=FDacnK zRjYtGQ6qia#d@_U9S{$CEkHuu43^lW^ub013wyM(K-y9wBRpSGR+x6IGp_gFhb&iG zTCNW1MG$d)y4!8HFkX-Z?eicV9-ZMT`qAZV=+?@M~u&nPOr$7|3KwvU1 zU+iP8U^c13g)LE+=q;m!KSe$0qm*U)q}!lquP5%pk1Y=_&ui?`URWC|2tZG@AKUY) zO=Fn#l?k^kVAaHFMQ&}W&PRN-p^Z49GTasSFDD4F{wQL5K-hi%^6R;UXF6SwB{x%x z{+Q7M)KUdJ1J>A&+8?KelDmEDp2jKhJcc=PjGZZOdN>CAn^eSL-$oJCrU_?P1dM^n*Mite{?UEt*(kyhuYV(no0DUlAy(Pq=nZUw%dZ(A@Oh!DRA>e-4Q?3g` zUp?#>Z^f`X*=X6C6-22u-`K&r0o+#sD{lO{Syb zG929;EMeLEHleifq%ohY`Sh!`J3oem(TYon+nqOoA=(Xn1k#smVcR^vtfpqxSt!=X zfB#EFzQiYWw&#qo4x#A4Unv`KNtpUFa1WD|$?Z;!Q)*VIr6uPp@9fA$ZShVi`!(jv zl=nAQ!JJQ~mVyT$jDHbwbo#xWig}r5TsZxqGUd0SR@8U9(%?esJQ5?*RE9WO^DI$n zjW`VAExb8ma!Zg_pQh=gcHd4nk;qv5p?$oybZcO+w;9DuaB}OUNi1lr@k_c0CVc_EbSbFY!(fWaxosA zLyM7TIa87)#}gf^f1Mg#K{;e5K|+iHAtf*AzvPvba_Q4DP}c*p+Vs&1N*JgXK1V99 zy75T=$sWc-o6lkeUVHc8EMchXhw}gtPk5ra-+k%?7M7nQNSwpz`lx@tVbhXML(bz? zAesLiubdloGO+gb>KSL4ui6{1UiMbj=G0m|YZ>aZG3UI?3o;NxaYm;Po4;Q1`%yM} zKoAfN@&z)mk?;eUIn$XDaF(u&?Z5-a-RpdY<{esI)J1yzJi8e0oGv7ro(q2zY#-H#;MZ+)}(_(QONitf8G(+p>p=7ysZ~(!o zxb{2pXX*&@MB#AFay+x5a8Olh(t;B;L)Xs(bN#s=@XSRftc4oPt-eSvC2*4|kq&}H zfMJ8FX+=)5biw(FvPz819qREm*5&v-r2(<4(D>=_24_|a=^a9k4yX~;m;2B97G{Kt z7ThpQUyF3yq7RyuCeDtgW%UO-+rgoghzQ0^SdP9^K92W7412e+xR*{$M>4BvJ&n`X zivjCR!pLC(Sefs#=)Ayqcj_%dp>Pkfe5sl1Dd10z_h=7umsR-=s>JNd6JLhb0a3>L zPznN%W{jg4rGkf&sy!_;p2C^K&s?i95@8#=+p8!GR1Hjf?I5c&&tB2s3~E(unu!|# zH)zLLM-2+K!cJRLKW=o%Hb{DQHS0%Py=!@8eg9|9@X3$@5WV31(q|~_5=DbE8Yd;0 zlm^3&1W_2~Q6ppjH@F$pp-Y_(FKi+PsL000zFXhQ2IY(Q)gPzA60#F;jcLd=l|+h9 Gw0m=iD9ITB literal 2972 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 SM}?P3Daorb4Lpzp@dn0gugDkx diff --git a/book-missed-slots.mjs b/book-missed-slots.mjs new file mode 100644 index 0000000000000000000000000000000000000000..13e8ea56f893c4a0d9fbe56bff9a140dc19cccb2 GIT binary patch literal 2144 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 Ts$sg-=WA1Tpophu7A>0A4Y#Xl diff --git a/helpers/bookSlot.mjs b/helpers/bookSlot.mjs index b690970efacf748e3e7fd4c8520593e246ba7618..bec9a56bd5fc5208e58ae4ef9429216737fb640e 100644 GIT binary patch literal 1572 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 diff --git a/helpers/login.mjs b/helpers/login.mjs index 5056eaf19847260207b76cca39504f27e2823c6c..48cb70240270696750aab3fb23af3d56ac18f352 100644 GIT binary patch literal 2087 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 Vv8b{eDgA=4dVG0_-36^IrUTBE6ea)w diff --git a/helpers/setupUtility.mjs b/helpers/setupUtility.mjs new file mode 100644 index 0000000000000000000000000000000000000000..173ca3bfb158d7917649efd7f618f3656e85d23f GIT binary patch literal 857 zcmV-f1E%}{M@dveQdv+`0COgYKdVt6A3idXtn?^zCsGmqt|&=R~B zAKZCDQ7c68XTI!lb2q1|cyw7_pq{OWFW2n3Jv~knOum`5$ywEz(&q@(NUXb6`q`;} z_37X@G_)3KL-)gusz9K~->mW`*i(TWn(?W62~rMm6t&@CnE@Ur@2 zioy9!j2BoFbmw?DvSLd-x%F<#(iS9I3ygcuxs=*$*Ef!1_LX_c3USSUA<9ap^iS59 zurR^gtBK!@JHoJx&{~{ihQtt}xA>N(BGDwBZQQh*<0$oaKrzKCa)dY9nc68zKaKw;adYIV+ZwCZ}KwX>hQ_ ze2(UZqLvZVr9chm^x+NP?7dkZj%|y=vtZj2=9YbMe!mT?LL{^oo^lO1ezE&&1STdNfn)HUH(_ z{8`GCsw5T?kwyC?nb{ndG2MoKrSRIK4v;^tC~aGCRU$g7XEg!-$xUMlECzj;4SAD_ zaFb4Z$jDsUr>_lwm62rsU2gOn+UaQCC>PLIDY_MZDa+eln%WpTHxv_MkEpb(=yovc zWFD}r=np{PA(bCpu7CF0@4W}*-XwGWDT$0D-0T4C(r^H#0^aD*rVyKuhHv}wp;yEb z1@BPs<(T4X=w%KJ!JSyfjRIkIQT7aTtD9VT7zi3kzeon81Y0_8RPxtV jqsc2rW8coX*$Rr7TLp33S}VPhc