From 37a2f9b1d3a5d0e61eb8bf238266dbd6240b7b2e Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 24 Mar 2025 15:27:15 +0100 Subject: [PATCH] Add tests and cleanup redirects The changes include: 1. Adding GitHub Actions test job 2. Adding redirect tests 3. Updating redirect configurations 4. Migrating some redirects to SvelteKit routes 5. Test config improvements --- .github/workflows/tests.yml | 31 ++++++++++++++++++++++- .gitignore | 1 + package.json | 2 +- playwright.config.ts | 5 ++-- src/redirects.json | 19 ++------------ src/routes/careers/+page.server.ts | 5 ++++ src/routes/cli/install.sh/+page.server.ts | 5 ++++ tests/redirects.test.ts | 10 ++++++++ tests/test.ts | 6 ----- 9 files changed, 57 insertions(+), 27 deletions(-) create mode 100644 src/routes/careers/+page.server.ts create mode 100644 src/routes/cli/install.sh/+page.server.ts create mode 100644 tests/redirects.test.ts delete mode 100644 tests/test.ts diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9db07f332..401f8e9d5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -35,7 +35,36 @@ jobs: run: pnpm install --frozen-lockfile - name: Check formatting run: pnpm format:check - + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + - uses: actions/setup-node@v4 + with: + node-version: 20 + - name: Install corepack + run: npm i -g corepack@latest + - name: Install pnpm + run: corepack enable + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Install playwright dependencies + run: pnpm exec playwright install + - name: Run tests + run: pnpm test build: runs-on: ubuntu-latest steps: diff --git a/.gitignore b/.gitignore index 337d031d2..6defc8c09 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ terraform/**/.t* terraform/**/.env terraform/**/**/*.tfstate* /.cache +/test-results \ No newline at end of file diff --git a/package.json b/package.json index 17ca14c98..fc0f65f92 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "icons:optimize": "node ./src/icons/optimize.js", "lint": "prettier --check . && eslint .", "preview": "vite preview", - "test": "npm run test:integration && npm run test:unit", + "test": "npm run test:integration", "test:integration": "playwright test", "test:unit": "vitest", "optimize": "node ./scripts/optimize-assets.js", diff --git a/playwright.config.ts b/playwright.config.ts index 62187d0a9..2fac9a97e 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -2,9 +2,10 @@ import type { PlaywrightTestConfig } from '@playwright/test'; const config: PlaywrightTestConfig = { webServer: { - command: 'npm run build && npm run preview', - port: 4173 + command: 'npm run dev', + port: 5173 }, + fullyParallel: true, testDir: 'tests', testMatch: /(.+\.)?(test|spec)\.[jt]s/ }; diff --git a/src/redirects.json b/src/redirects.json index 12239904c..970125ad1 100644 --- a/src/redirects.json +++ b/src/redirects.json @@ -139,10 +139,6 @@ "link": "/docs/authentication-management", "redirect": "/docs/products/auth/users" }, - { - "link": "/docs/authentication-server", - "redirect": "/docs/authentication-server" - }, { "link": "/docs/authentication-security", "redirect": "/docs/products/auth/security" @@ -265,7 +261,7 @@ }, { "link": "/docs/debugging", - "redirect": "/docs/advanced/self-hosting/debugging" + "redirect": "/docs/advanced/self-hosting/debug" }, { "link": "/docs/upgrade", @@ -467,10 +463,6 @@ "link": "/docs/models/collection", "redirect": "/docs/references/cloud/models/collection" }, - { - "link": "/docs/models/attribute", - "redirect": "/docs/references/cloud/models/attribute" - }, { "link": "/docs/models/index", "redirect": "/docs/references/cloud/models/index" @@ -659,10 +651,6 @@ "link": "/keyboard", "redirect": "/docs/tooling/appwriter" }, - { - "link": "/careers", - "redirect": "https://appwrite.careers" - }, { "link": "/policy/terms", "redirect": "/terms" @@ -671,10 +659,7 @@ "link": "/policy/privacy", "redirect": "/privacy" }, - { - "link": "/cli/install.sh", - "redirect": "https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/install.sh" - }, + { "link": "/case-studies", "redirect": "/customer-stories" diff --git a/src/routes/careers/+page.server.ts b/src/routes/careers/+page.server.ts new file mode 100644 index 000000000..4526a5e59 --- /dev/null +++ b/src/routes/careers/+page.server.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(301, 'https://careers.appwrite.io'); +} diff --git a/src/routes/cli/install.sh/+page.server.ts b/src/routes/cli/install.sh/+page.server.ts new file mode 100644 index 000000000..51a21c5b2 --- /dev/null +++ b/src/routes/cli/install.sh/+page.server.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(301, 'https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/install.sh'); +} diff --git a/tests/redirects.test.ts b/tests/redirects.test.ts new file mode 100644 index 000000000..34f26806f --- /dev/null +++ b/tests/redirects.test.ts @@ -0,0 +1,10 @@ +import { expect, test } from '@playwright/test'; +import redirects from '../src/redirects.json' with { type: 'json' }; + +redirects.forEach(({ link, redirect }) => { + test(`redirected from ${link} to ${redirect} exists`, async ({ page }) => { + const response = await page.goto(redirect); + + expect(response?.ok()).toBeTruthy(); + }); +}); diff --git a/tests/test.ts b/tests/test.ts deleted file mode 100644 index f9f31627c..000000000 --- a/tests/test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('index page has expected h1', async ({ page }) => { - await page.goto('/'); - await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); -});