From 1be8541838396bd8902d81125af6ccd4c6e54567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Barbosa?= <52362496+barbmarcio@users.noreply.github.com> Date: Wed, 24 Jul 2024 17:52:33 +0100 Subject: [PATCH] feat: use `bun serve` in http tests Drops a dependency and simplifies serving assets related to e2e tests. --- .env.example | 2 +- bun.lockb | Bin 107822 -> 93319 bytes e2e/auctions.test.ts | 6 +++--- e2e/config.ts | 3 +++ e2e/constants.ts | 3 --- e2e/events.test.ts | 6 +++--- e2e/{ => public}/index.html | 2 +- e2e/server.ts | 22 ++++++++++++++++++++++ package.json | 5 ++--- playwright.config.ts | 4 ++-- tsconfig.json | 2 +- tsup.config.ts | 1 + 12 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 e2e/config.ts delete mode 100644 e2e/constants.ts rename e2e/{ => public}/index.html (93%) create mode 100644 e2e/server.ts diff --git a/.env.example b/.env.example index f7baccf..9b47526 100644 --- a/.env.example +++ b/.env.example @@ -1 +1 @@ -PLAYWRIGHT_PORT= +SERVER_PORT= diff --git a/bun.lockb b/bun.lockb index 70f493ae65a05a11cd764fbc7a95e4bfb7b70b8f..500b13a69b0e7d58eabb5f3e3b0456bbda350dc3 100755 GIT binary patch delta 12911 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 delta 21967 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 diff --git a/e2e/auctions.test.ts b/e2e/auctions.test.ts index 07cb2c7..4c55b7d 100644 --- a/e2e/auctions.test.ts +++ b/e2e/auctions.test.ts @@ -1,6 +1,6 @@ import { expect, test } from "@playwright/test"; import { apis, baseURL } from "../src/constants/apis.constant"; -import { playwrightConstants } from "./constants"; +import { playwrightConstants } from "./config"; test.describe("Create Auction via Topsort SDK", () => { test("should create an auction successfully", async ({ page }) => { @@ -23,7 +23,7 @@ test.describe("Create Auction via Topsort SDK", () => { await route.fulfill({ json: mockAPIResponse }); }); - await page.goto(playwrightConstants.url); + await page.goto(playwrightConstants.host); const result = await page.evaluate(() => { const config = { apiKey: "rando-api-key", @@ -59,7 +59,7 @@ test.describe("Create Auction via Topsort SDK", () => { test("should fail to call with missing apiKey", async ({ page }) => { const expectedError = { status: 401, statusText: "API Key is required.", body: {} }; - await page.goto(playwrightConstants.url); + await page.goto(playwrightConstants.host); const result = await page.evaluate(() => { const config = { apiKey: null, diff --git a/e2e/config.ts b/e2e/config.ts new file mode 100644 index 0000000..008e530 --- /dev/null +++ b/e2e/config.ts @@ -0,0 +1,3 @@ +export const playwrightConstants = { + host: `http://localhost:${process.env.SERVER_PORT || 8080}/index.html`, +}; diff --git a/e2e/constants.ts b/e2e/constants.ts deleted file mode 100644 index 2864308..0000000 --- a/e2e/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const playwrightConstants = { - url: `http://localhost:${process.env.PLAYWRIGHT_PORT || 8080}/e2e`, -} \ No newline at end of file diff --git a/e2e/events.test.ts b/e2e/events.test.ts index 9b92682..57408e5 100644 --- a/e2e/events.test.ts +++ b/e2e/events.test.ts @@ -1,6 +1,6 @@ import { expect, test } from "@playwright/test"; import { apis, baseURL } from "../src/constants/apis.constant"; -import { playwrightConstants } from "./constants"; +import { playwrightConstants } from "./config"; test.describe("Report Events via Topsort SDK", () => { test("should report an successfully", async ({ page }) => { @@ -12,7 +12,7 @@ test.describe("Report Events via Topsort SDK", () => { await route.fulfill({ json: mockAPIResponse }); }); - await page.goto(playwrightConstants.url); + await page.goto(playwrightConstants.host); const result = await page.evaluate(() => { const config = { apiKey: "rando-api-key", @@ -45,7 +45,7 @@ test.describe("Report Events via Topsort SDK", () => { test("should fail to call with missing apiKey", async ({ page }) => { const expectedError = { status: 401, statusText: "API Key is required.", body: {} }; - await page.goto(playwrightConstants.url); + await page.goto(playwrightConstants.host); const result = await page.evaluate(() => { const config = { apiKey: null, diff --git a/e2e/index.html b/e2e/public/index.html similarity index 93% rename from e2e/index.html rename to e2e/public/index.html index 9b1cedd..0165b8e 100644 --- a/e2e/index.html +++ b/e2e/public/index.html @@ -4,7 +4,7 @@ Topsort SDK Test Application - +

Test Topsort.js Integration

diff --git a/e2e/server.ts b/e2e/server.ts new file mode 100644 index 0000000..d9a8a45 --- /dev/null +++ b/e2e/server.ts @@ -0,0 +1,22 @@ +import { file } from "bun"; + +const PORT = process.env.SERVER_PORT || 8080; + +Bun.serve({ + fetch(req) { + const url = new URL(req.url); + const pathname = url.pathname === "/" ? "/index.html" : url.pathname; + const filePath = `./dist${pathname}`; + + try { + if (filePath.endsWith(".ico")) { + return new Response("", { status: 204 }); + } + + return new Response(file(filePath)); + } catch (e) { + return new Response("Not Found", { status: 404 }); + } + }, + port: PORT, +}); diff --git a/package.json b/package.json index 926bd26..214358f 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "CHANGELOG.md", "LICENSE", "README.md", - "dist/index.global.js", "dist/index.d.mts", "dist/index.d.ts", "dist/index.js", @@ -36,13 +35,13 @@ "test:e2e": "playwright test", "format": "biome check", "format:fix": "biome check --write", - "prepare": "lefthook install" + "prepare": "lefthook install", + "serve:e2e": "bun run ./e2e/server.ts" }, "devDependencies": { "@biomejs/biome": "1.8.3", "@playwright/test": "^1.45.2", "@types/bun": "1.1.6", - "http-server": "^14.1.1", "lefthook": "1.7.2", "msw": "2.3.1", "tsup": "8.1.0", diff --git a/playwright.config.ts b/playwright.config.ts index 94b2487..b7af23b 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -3,7 +3,7 @@ import { defineConfig, devices } from "@playwright/test"; export default defineConfig({ testDir: "./e2e", timeout: 30000, - retries: 1, + retries: 0, reporter: [["list"], ["json", { outputFile: "test-results.json" }]], use: { trace: "on-first-retry", @@ -23,7 +23,7 @@ export default defineConfig({ }, ], webServer: { - command: `http-server ./ -p ${process.env.PLAYWRIGHT_PORT || 8080}`, + command: "bun run serve:e2e", reuseExistingServer: !process.env.CI, stdout: "ignore", stderr: "pipe", diff --git a/tsconfig.json b/tsconfig.json index 4eb4110..531c5f2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,6 @@ "allowJs": true, "types": ["node"] }, - "include": ["src/*.ts", "src/**/*.ts"], + "include": ["src/*.ts", "src/**/*.ts", "e2e/server.ts"], "exclude": ["node_modules"] } diff --git a/tsup.config.ts b/tsup.config.ts index a51cc34..49225ea 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -10,4 +10,5 @@ export default defineConfig({ options.keepNames = true; options.globalName = "Topsort"; }, + onSuccess: "cp -r ./e2e/public/* dist", });