From 2a0d3655a661734654f0015301c4a403a8a36e77 Mon Sep 17 00:00:00 2001 From: listlessbird <124798751+listlessbird@users.noreply.github.com> Date: Thu, 14 Mar 2024 04:07:17 +0530 Subject: [PATCH] feat: setup tests --- .github/workflows/playwright.yml | 27 ++ .gitignore | 4 + bun.lockb | Bin 277956 -> 333437 bytes e2e/auth.spec.ts | 23 ++ e2e/landing.spec.ts | 29 ++ package.json | 8 +- playwright.config.ts | 77 ++++ src/app/(landing)/_components/nav.tsx | 1 + tests-examples/demo-todo-app.spec.ts | 483 ++++++++++++++++++++++++++ vitest.config.ts | 9 + 10 files changed, 660 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/playwright.yml create mode 100644 e2e/auth.spec.ts create mode 100644 e2e/landing.spec.ts create mode 100644 playwright.config.ts create mode 100644 tests-examples/demo-todo-app.spec.ts create mode 100644 vitest.config.ts diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 0000000..cd56f89 --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Playwright tests + run: npx playwright test + - uses: actions/upload-artifact@v4 + if: always() + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/.gitignore b/.gitignore index 00a0bcb..3716364 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,7 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/bun.lockb b/bun.lockb index 97cd35372e3e45bc80191bc707aa1344bd21210c..ba321f8a25ca2942c3e59519325809d58bd99428 100755 GIT binary patch delta 85493 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 delta 51599 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 { + test.beforeEach(async ({ page }) => { + await page.goto("http://localhost:3000/auth") + }) + + test("auth page renders", async ({ page }) => { + await expect(page.getByRole("heading", { name: "Login" })).toBeVisible() + }) +}) + +// test("get started link", async ({ page }) => { +// await page.goto("https://playwright.dev/") + +// // Click the get started link. +// await page.getByRole("link", { name: "Get started" }).click() + +// // Expects page to have a heading with the name of Installation. +// await expect( +// page.getByRole("heading", { name: "Installation" }), +// ).toBeVisible() +// }) diff --git a/e2e/landing.spec.ts b/e2e/landing.spec.ts new file mode 100644 index 0000000..2af1d18 --- /dev/null +++ b/e2e/landing.spec.ts @@ -0,0 +1,29 @@ +import { expect, test } from "@playwright/test" + +test.describe("landing page", () => { + test.beforeEach(async ({ page }) => { + await page.goto("http://localhost:3000/") + }) + + test("landing page renders", async ({ page }) => { + await expect(page.getByRole("heading", { name: "KeepArr" })).toBeVisible() + }) + + test("dark mode toggle works", async ({ page }) => { + await page.getByRole("button", { name: "Toggle Theme" }).click() + + await page.getByRole("menuitem", { name: "Dark" }).click() + + await expect(page.locator("html").first()).toHaveClass("dark") + }) + + test("it goes to the auth page from the landing", async ({ page }) => { + await page.locator("button[data-testid=nav-menu]").click() + + await page.locator("a[href='/auth']").click() + + await page.waitForTimeout(1000) + + await expect(page.url()).toBe("http://localhost:3000/auth") + }) +}) diff --git a/package.json b/package.json index ddc6257..50ef318 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build": "next build", "start": "next start", "lint": "next lint", + "test": "vitest", "format": "prettier --check --ignore-path .gitignore .", "format:fix": "prettier --write --ignore-path .gitignore .", "prepare": "husky" @@ -35,9 +36,12 @@ "@commitlint/cli": "^19.1.0", "@commitlint/config-conventional": "^19.1.0", "@ianvs/prettier-plugin-sort-imports": "^4.1.1", + "@playwright/test": "^1.42.1", + "@testing-library/react": "^14.2.1", "@types/node": "^20", "@types/react": "^18.2.52", "@types/react-dom": "^18.2.18", + "@vitejs/plugin-react": "^4.2.1", "autoprefixer": "^10", "eslint": "^8", "eslint-config-next": "latest", @@ -46,11 +50,13 @@ "eslint-plugin-react": "^7.34.0", "eslint-plugin-tailwindcss": "^3.15.1", "husky": "^9.0.11", + "jsdom": "^24.0.0", "postcss": "^8", "prettier": "^3.2.4", "prettier-plugin-tailwindcss": "^0.5.11", "pretty-quick": "^4.0.0", "tailwindcss": "^3", - "typescript": "^5" + "typescript": "^5", + "vitest": "^1.3.1" } } diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..1a48871 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,77 @@ +import { defineConfig, devices } from "@playwright/test" + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: "./e2e", + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://127.0.0.1:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry", + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + + // { + // name: "firefox", + // use: { ...devices["Desktop Firefox"] }, + // }, + + // { + // name: "webkit", + // use: { ...devices["Desktop Safari"] }, + // }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: "bun run turbo", + // url: "http://localhost:3000", + // reuseExistingServer: !process.env.CI, + // }, +}) diff --git a/src/app/(landing)/_components/nav.tsx b/src/app/(landing)/_components/nav.tsx index 7abdd40..9d228c0 100644 --- a/src/app/(landing)/_components/nav.tsx +++ b/src/app/(landing)/_components/nav.tsx @@ -82,6 +82,7 @@ function SMNav({ Items }: { Items: ReactElement }) {