From e59d3f36f28ba9d5a1bb5b0cfab755a3d1820398 Mon Sep 17 00:00:00 2001 From: Axmin Shrestha <56112475+ax-sh@users.noreply.github.com> Date: Tue, 3 Dec 2024 05:06:22 +0545 Subject: [PATCH] test: add Playwright tests for browser functionality --- api/core/core.test.ts | 15 +++++++++++++-- api/core/index.ts | 2 +- api/core/puppet.test.ts | 23 +++++++++++++++++++++++ bun.lockb | Bin 34031 -> 35115 bytes docs/ref.md | 1 + package.json | 4 +++- 6 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 api/core/puppet.test.ts create mode 100644 docs/ref.md diff --git a/api/core/core.test.ts b/api/core/core.test.ts index 6869837..13d34f2 100644 --- a/api/core/core.test.ts +++ b/api/core/core.test.ts @@ -1,11 +1,14 @@ import { describe, expect, it, test } from "bun:test"; const { chromium: playwright } = require("playwright-core"); +const chromium = require("@sparticuz/chromium"); test("Check the page title of example.com", async (t) => { + const executablePath: string = await chromium.executablePath(); + expect(executablePath).not.toBeEmpty(); const browser = await playwright.launch({ - // args: chromium.args, - // executablePath: await chromium.executablePath(), + args: chromium.args, // headless: chromium.headless, + // executablePath }); const context = await browser.newContext(); @@ -16,3 +19,11 @@ test("Check the page title of example.com", async (t) => { expect(pageTitle).toBe("Example Domain"); }); + +describe("PDF", () => { + it("should open browser", async () => { + const cloud = require("chrome-aws-lambda"); + const executablePath = await cloud.executablePath; + expect(executablePath).toEqual(null); + }); +}); diff --git a/api/core/index.ts b/api/core/index.ts index 8b83d73..8d119de 100644 --- a/api/core/index.ts +++ b/api/core/index.ts @@ -1 +1 @@ -export * from "./core"; \ No newline at end of file +export * from "./core"; diff --git a/api/core/puppet.test.ts b/api/core/puppet.test.ts new file mode 100644 index 0000000..d46b403 --- /dev/null +++ b/api/core/puppet.test.ts @@ -0,0 +1,23 @@ +import { expect, test } from "@playwright/test"; +test.describe("Playwright Browser Testing", () => { + test("should navigate to a page and check title", async ({ page }) => { + await page.goto("https://example.com"); + const title = await page.title(); + expect(title).toBe("Example Domain"); + }); + + // test('should find an element and check its text', async ({ page }) => { + // await page.goto('https://example.com'); + // const text = await page.locator('h1').innerText(); + // expect(text).toBe('Example Domain'); + // }); + // + // test('should take a screenshot', async ({ page }) => { + // await page.goto('https://example.com'); + // await page.screenshot({ path: 'screenshot.png' }); + // // Optionally check the file existence + // const fs = await import('fs/promises'); + // const exists = await fs.access('screenshot.png').then(() => true).catch(() => false); + // expect(exists).toBe(true); + // }); +}); diff --git a/bun.lockb b/bun.lockb index 0935435745f6c57618804fdd7f45c89dd3a86242..1bb5095c3e296934adac650d2b68452429cfebc3 100755 GIT binary patch delta 5023 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 delta 4381 zcmeHKdr*|u760xByYL~p@^sf#Q83z#y1=fm&{aMai3%ZVd=OE=MON6wkntgd1-LkAQqST2bP`LtvKY8$$9n&!+7g(aGhod;!eu8@=__ z-1%|T=Rq4c1sYktZB&$zkQ?gPds*Jn>}hP=rYIXR4(d^juxMSep)oq?MKLuyi0-%t zH!@z{K`<|?JIpgN9iEY|zSi69Yi-G-8^UEP#2}-g%>%PF6U_5ULR0Q#3z&QL(Oh+E z+kL3mTIFf>&S+>+ByVU@PM`~J-O}3Z^#rymN5XO;_LFxbAI!aEfw_HTu2nNVyf|e! zkOcjm#L#T!K}NB?3(860$;pb6q9|?c2`F&IJXGKgjnHz3#bJIDdR}yMs-lbsmw~O| z0dxEvN^D(@juZ%9yM7B6xd`Ldzany%=2?de&kZpu6u99zru8oC%eD`6Cf#mhCFXmq@2zlCE{Y$9UQbas9K99!^*Y>Pyx|J_V8gfNUwc_5n^!c*tazI%J~$lmaau zM}&7*rIYb4(LlCTU7R6bs;)j5P5r3_Vlf3%b;E9)m^l>C+}dT7cuah{IG50`P00saar{IcFW+Uo>WI;B7W6Jb6<_2>C9%!Dd_3zC3LI9D0T|uTtneD{@ zFZgL`We$xm6>Nal$O=oq++ZodGhY#wSAsb)^MqCbT#xTzu2%tY`ftqbJhB#;$LE39 zhZW4+VKu<|4FIP{ne8L^a5bw#)7urXR}9++Fyq8cV4n8(q{;%Tg;FBV)e z?7%fR5}MwDbw$yF4j0F(FQg0{D}Ev|?i2?Hq4+L0q_Mf0Z0QT z0(`%X1#sQU%ZAso2AB^N0Z#!7fQ7(ZfG-Rekk1pFj=~Ip1Hfc}FU4^H@2DHV|AV}V zI52RaF9C4F$XkhTB;HBFtQRhArX#{cc*7Y;=K`QT=U%HK^U-sJ>XV(DjJ zuO8*Tq>75{EPJ*+OW8^dRZd}{-m1Zz@Uy4A`~H!`?~RXoUKI{|uATQV^6=^(@wwv< zhYGi|1?^$!pxx^&IeXwWqtJhD`UjI=I<6d5MYi2(cfuZd&zTnea^1*3z5kXfUPoPC z#VNYB-YJsERNW!orJm|i{6bx?c8-fY?j}yCPF>Xba#ysdaM<&Cu%T$Od(GC!Yfo#K z^^2QJUp=FWojG<#u6?F*fjnM|xJ=*k)~L6Q^qF^q=%kVj7SToC4TB;`)*2@pmeiO< zCi!Zd!cDIu@220@Sj0j48}gZCs4azlS?z16bF0>p6M3~6{<<%>e*dv}-aM=xpEB~U z`|#4u!JU;)Hw{~oXtvK{^q-ysIyqZ&%So|VZ${;e?~4k3Au)1q|A+$ z+{ml1_tO4thx{M=u-$p~9D8;azDMXm+LKwnd&=PKd{`W4>agd9zSOwLL+|qk&brSs zqSR=(MLxchqTEQ?8!+cY9)_m7ulz8r;5Ubd?UARWKBF(z|HlcphAmU5G+@b%JT=e0 zvrr#bmUn2_9(jzu_o~;t;AQ{$VM}u={U~6L>-J-Oq$_@e!DRY4P%+kocz{#czAG>1 eBe8YVH!_l;O4%+duCE+8UH?qV!1-OZ(fIMYo4 diff --git a/docs/ref.md b/docs/ref.md new file mode 100644 index 0000000..cfc0ad5 --- /dev/null +++ b/docs/ref.md @@ -0,0 +1 @@ +https://playwright.dev/docs/running-tests diff --git a/package.json b/package.json index 03cf1c0..7ea9ec9 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "type": "module", "devDependencies": { "@biomejs/biome": "1.9.4", + "@playwright/test": "^1.49.0", "@types/bun": "latest" }, "peerDependencies": { @@ -12,7 +13,8 @@ "scripts": { "dev": "ntl dev", "format": "nr biome check --write", - "test": "bun test" + "test": "bun test", + "test:puppet": "nlx playwright test --headed puppet.test.ts" }, "dependencies": { "@netlify/functions": "^2.8.2",