Skip to content

e2e(docs) add initial tests #7728

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 18 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions e2e/docs-e2e/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

# Playwright
node_modules/
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
18 changes: 18 additions & 0 deletions e2e/docs-e2e/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "docs-e2e",
"description": "",
"version": "1.0.0",
"author": "",
"devDependencies": {
"@playwright/test": "^1.50.1",
"@types/node": "^24.0.13"
},
"keywords": [],
"license": "ISC",
"main": "index.js",
"scripts": {
"test": "pnpm exec playwright test --config=playwright.config.ts --project=chromium",
"test-ui": "pnpm exec playwright test --config=playwright.config.ts --project=chromium --ui"
},
"type": "commonjs"
}
83 changes: 83 additions & 0 deletions e2e/docs-e2e/playwright.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import { defineConfig, devices } from '@playwright/test';

/** Read environment variables from file. https://github.com/motdotla/dotenv */
// import dotenv from 'dotenv';
// import path from 'path';
// dotenv.config({ path: path.resolve(__dirname, '.env') });

/** See https://playwright.dev/docs/test-configuration. */

const TestingURL = 'http://127.0.0.1:3000';

export default defineConfig({
testDir: './tests',
/* Global timeout for each test */
timeout: 30000,
/* 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: TestingURL,

/* 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: 'chrome',
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: 'pnpm -C ../../ run docs.dev',
url: TestingURL,
reuseExistingServer: !process.env.CI,
},
});
93 changes: 93 additions & 0 deletions e2e/docs-e2e/tests/Docs/advanced-pages-load.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import { test, expect } from '@playwright/test';

test('Advanced Dollar Function page loads', async ({ page }) => {
await page.goto('/docs/advanced/dollar/');

await expect(page).toHaveTitle('The $ dollar sign | Advanced 📚 Qwik Documentation');
});

test('Advanced Containers page loads', async ({ page }) => {
await page.goto('/docs/advanced/containers/');
await expect(page).toHaveTitle('Containers | Advanced 📚 Qwik Documentation');
});

test('Advanced QRL page loads', async ({ page }) => {
await page.goto('/docs/advanced/qrl/');
await expect(page).toHaveTitle('QRL | Advanced 📚 Qwik Documentation');
});

test('Advanced Library page loads', async ({ page }) => {
await page.goto('/docs/advanced/library/');
await expect(page).toHaveTitle('Component library | Advanced 📚 Qwik Documentation');
});

test('Advanced Qwikloader page loads', async ({ page }) => {
await page.goto('/docs/advanced/qwikloader/');
await expect(page).toHaveTitle('Qwikloader | Advanced 📚 Qwik Documentation');
});

test('Advanced Optimizer page loads', async ({ page }) => {
await page.goto('/docs/advanced/optimizer/');
await expect(page).toHaveTitle('Optimizer Rules | Advanced 📚 Qwik Documentation');
});

test('Advanced Prefetching Modules page loads', async ({ page }) => {
await page.goto('/docs/advanced/modules-prefetching/');
await expect(page).toHaveTitle('Prefetching | Advanced 📚 Qwik Documentation');
});

test('Advanced Custom Build Directory page loads', async ({ page }) => {
await page.goto('/docs/advanced/custom-build-dir/');
await expect(page).toHaveTitle('Custom Build Output Directory | Advanced 📚 Qwik Documentation');
});

test('Advanced Vite page loads', async ({ page }) => {
await page.goto('/docs/advanced/vite/');
await expect(page).toHaveTitle('Vite | Advanced 📚 Qwik Documentation');
});

test('Advanced Routing page loads', async ({ page }) => {
await page.goto('/docs/advanced/routing/');
await expect(page).toHaveTitle('Advanced Routing | Qwik City 📚 Qwik Documentation');
});

test('Advanced Plugins page loads', async ({ page }) => {
await page.goto('/docs/advanced/plugins/');
await expect(page).toHaveTitle('Qwik Plugins | Qwik City 📚 Qwik Documentation');
});

test('Advanced Request Handling page loads', async ({ page }) => {
await page.goto('/docs/advanced/request-handling/');
await expect(page).toHaveTitle('Request Handling | Advanced 📚 Qwik Documentation');
});

test('Advanced Speculative Module Fetching page loads', async ({ page }) => {
await page.goto('/docs/advanced/speculative-module-fetching/');
await expect(page).toHaveTitle('Speculative Module Fetching | Advanced 📚 Qwik Documentation');
});

test('Advanced Menu page loads', async ({ page }) => {
await page.goto('/docs/advanced/menu/');
await expect(page).toHaveTitle('Menu | Advanced 📚 Qwik Documentation');
});

test('Advanced Generating Sitemaps page loads', async ({ page }) => {
await page.goto('/docs/advanced/sitemaps/');
await expect(page).toHaveTitle('Generating Sitemaps | Advanced 📚 Qwik Documentation');
});

test('Advanced ESLint-Rules page loads', async ({ page }) => {
await page.goto('/docs/advanced/eslint/');
// currently does not have a custom title
await expect(page).toHaveTitle('Qwik - Framework reimagined for the edge');
});

test('Advanced Content Security Policy page loads', async ({ page }) => {
await page.goto('/docs/advanced/content-security-policy/');
await expect(page).toHaveTitle('Content Security Policy | Advanced 📚 Qwik Documentation');
});

test('Advanced Complex Forms page loads', async ({ page }) => {
await page.goto('/docs/advanced/complex-forms/');
await expect(page).toHaveTitle('Complex Forms | Advanced 📚 Qwik Documentation');
});
16 changes: 16 additions & 0 deletions e2e/docs-e2e/tests/Docs/community-pages.load.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { test, expect } from '@playwright/test';

test('Community Projects page loads', async ({ page }) => {
await page.goto('/community/projects/');
await expect(page).toHaveTitle('Projects | Qwik Community 📚 Qwik Documentation');
});

test('Community Groups page loads', async ({ page }) => {
await page.goto('/community/groups/');
await expect(page).toHaveTitle('Groups | Qwik Community 📚 Qwik Documentation');
});

test('Community Values page loads', async ({ page }) => {
await page.goto('/community/values/');
await expect(page).toHaveTitle('Values | Qwik Community 📚 Qwik Documentation');
});
21 changes: 21 additions & 0 deletions e2e/docs-e2e/tests/Docs/concepts-pages-laod.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { test, expect } from '@playwright/test';

test('Concepts Think Qwik page loads', async ({ page }) => {
await page.goto('/docs/concepts/think-qwik/');
await expect(page).toHaveTitle('Think Qwik | Concepts 📚 Qwik Documentation');
});

test('Concepts Resumable page loads', async ({ page }) => {
await page.goto('/docs/concepts/resumable/');
await expect(page).toHaveTitle('Resumable | Concepts 📚 Qwik Documentation');
});

test('Concepts Progressive page loads', async ({ page }) => {
await page.goto('/docs/concepts/progressive/');
await expect(page).toHaveTitle('Progressive | Concepts 📚 Qwik Documentation');
});

test('Concepts Reactivity page loads', async ({ page }) => {
await page.goto('/docs/concepts/reactivity/');
await expect(page).toHaveTitle('Reactivity | Concepts 📚 Qwik Documentation');
});
73 changes: 73 additions & 0 deletions e2e/docs-e2e/tests/Docs/cookbook-pages-load.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import { test, expect } from '@playwright/test';

test('Cookbook Overview page loads', async ({ page }) => {
await page.goto('/docs/cookbook/');
await expect(page).toHaveTitle('Cookbook | Overview 📚 Qwik Documentation');
});

test('Cookbook Algolia Search page loads', async ({ page }) => {
await page.goto('/docs/cookbook/algolia-search/');
await expect(page).toHaveTitle('Cookbook | Algolia Search 📚 Qwik Documentation');
});

test('Cookbook Combine Request Handlers page loads', async ({ page }) => {
await page.goto('/docs/cookbook/combine-request-handlers/');
await expect(page).toHaveTitle('Cookbook | Combine Request Handlers 📚 Qwik Documentation');
});

test('Cookbook Debouncer page loads', async ({ page }) => {
await page.goto('/docs/cookbook/debouncer/');
await expect(page).toHaveTitle('Cookbook | Debouncer 📚 Qwik Documentation');
});

test('Cookbook Fonts page loads', async ({ page }) => {
await page.goto('/docs/cookbook/fonts/');
await expect(page).toHaveTitle('Cookbook | Font optimization 📚 Qwik Documentation');
});

test('Cookbook Glob Import & Dynamic Import page loads', async ({ page }) => {
await page.goto('/docs/cookbook/glob-import/');
await expect(page).toHaveTitle(
'Cookbook | Glob Import with import.meta.glob 📚 Qwik Documentation'
);
});

test('Cookbook NavLink Component page loads', async ({ page }) => {
await page.goto('/docs/cookbook/nav-link/');
await expect(page).toHaveTitle('Cookbook | Navbar link 📚 Qwik Documentation');
});

test('Cookbook Deploy with Node using Docker page loads', async ({ page }) => {
await page.goto('/docs/cookbook/node-docker-deploy/');
await expect(page).toHaveTitle('Cookbook | Deploy with Node using Docker 📚 Qwik Documentation');
});

test('Cookbook Portals page loads', async ({ page }) => {
await page.goto('/docs/cookbook/portals/');
await expect(page).toHaveTitle('Cookbook | Portals 📚 Qwik Documentation');
});

test('Cookbook Streaming/deferred loaders page loads', async ({ page }) => {
await page.goto('/docs/cookbook/streaming-deferred-loaders/');
await expect(page).toHaveTitle('Cookbook | Streaming/deferred loaders 📚 Qwik Documentation');
});

test('Cookbook sync$ Events page loads', async ({ page }) => {
await page.goto('/docs/cookbook/sync-events/');
await expect(page).toHaveTitle('Cookbook | Synchronous Events with State 📚 Qwik Documentation');
});

test('Cookbook Theme Management page loads', async ({ page }) => {
await page.goto('/docs/cookbook/theme-management/');
await expect(page).toHaveTitle('Cookbook | Dark and Light Theme 📚 Qwik Documentation');
});

test('Cookbook Drag & Drop page loads', async ({ page }) => {
await page.goto('/docs/cookbook/drag&drop/');
await expect(page).toHaveTitle('Cookbook | Drag & Drop 📚 Qwik Documentation');
});

test('Cookbook View Transition API page loads', async ({ page }) => {
await page.goto('/docs/cookbook/view-transition/');
await expect(page).toHaveTitle('Cookbook | View Transition API 📚 Qwik Documentation');
});
67 changes: 67 additions & 0 deletions e2e/docs-e2e/tests/Docs/deployments-pages-load.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { test, expect } from '@playwright/test';

test('Deployments Overview page loads', async ({ page }) => {
await page.goto('/docs/deployments/');
await expect(page).toHaveTitle('Deployments | Guides 📚 Qwik Documentation');
});

test('Deployments Azure Static Web Apps Middleware page loads', async ({ page }) => {
await page.goto('/docs/deployments/azure-swa/');
await expect(page).toHaveTitle('Azure Static Web Apps | Deployments 📚 Qwik Documentation');
});

test('Deployments AWS Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/aws-lambda/');
await expect(page).toHaveTitle('AWS Lambda | Deployments 📚 Qwik Documentation');
});

test('Deployments Firebase Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/firebase/');
await expect(page).toHaveTitle('Firebase | Deployments 📚 Qwik Documentation');
});

test('Deployments Google Cloud Run Middleware page loads', async ({ page }) => {
await page.goto('/docs/deployments/gcp-cloud-run/');
await expect(page).toHaveTitle('Cloud Run Middleware | Deployments 📚 Qwik Documentation');
});

test('Deployments Cloudflare Pages Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/cloudflare-pages/');
await expect(page).toHaveTitle(
'Cloudflare Pages Adapter and Middleware | Deployments 📚 Qwik Documentation'
);
});

test('Deployments Deno Middleware page loads', async ({ page }) => {
await page.goto('/docs/deployments/deno/');
await expect(page).toHaveTitle('Deno Middleware | Deployments 📚 Qwik Documentation');
});

test('Deployments Bun Middleware page loads', async ({ page }) => {
await page.goto('/docs/deployments/bun/');
await expect(page).toHaveTitle('Bun Middleware | Deployments 📚 Qwik Documentation');
});

test('Deployments Netlify Edge Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/netlify-edge/');
await expect(page).toHaveTitle(
'Netlify Edge Adapter and Middleware | Deployments 📚 Qwik Documentation'
);
});

test('Deployments Node Middleware page loads', async ({ page }) => {
await page.goto('/docs/deployments/node/');
await expect(page).toHaveTitle('Node Middleware | Deployments 📚 Qwik Documentation');
});

test('Deployments Vercel Edge Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/vercel-edge/');
await expect(page).toHaveTitle(
'Vercel Edge Adapter and Middleware | Deployments 📚 Qwik Documentation'
);
});

test('Deployments Static Site Adapter page loads', async ({ page }) => {
await page.goto('/docs/deployments/static/');
await expect(page).toHaveTitle('Static Site 📚 Qwik Documentation');
});
Loading
Loading