diff --git a/package.json b/package.json index 5582aec3c27f..08582a82508b 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,9 @@ "test:smoke:docs": "turbo run build --filter=docs", "test:check-examples": "node ./scripts/smoke/check.js", "test:vite-ci": "cd packages/astro && pnpm run test:unit && pnpm run test:integration", - "test:e2e": "cd packages/astro && pnpm playwright install firefox && pnpm run test:e2e", + "test:e2e": "pnpm run test:e2e:astro && pnpm run test:e2e:alpinejs", + "test:e2e:astro": "cd packages/astro && pnpm playwright install firefox && pnpm run test:e2e", + "test:e2e:alpinejs": "cd packages/integrations/alpinejs && pnpm run test:e2e", "test:e2e:match": "cd packages/astro && pnpm playwright install firefox && pnpm run test:e2e:match", "test:e2e:hosts": "turbo run test:hosted", "typecheck:tests": "pnpm -r run --sequential typecheck:tests", diff --git a/packages/integrations/alpinejs/playwright.config.js b/packages/integrations/alpinejs/playwright.config.js new file mode 100644 index 000000000000..393177e8428c --- /dev/null +++ b/packages/integrations/alpinejs/playwright.config.js @@ -0,0 +1,26 @@ +import { defineConfig } from '@playwright/test'; + +// NOTE: Sometimes, tests fail with `TypeError: process.stdout.clearLine is not a function` +// for some reason. This comes from Vite, and is conditionally called based on `isTTY`. +// We set it to false here to skip this odd behavior. +process.stdout.isTTY = false; + +export default defineConfig({ + testMatch: 'test/*.test.ts', + timeout: 40_000, + expect: { + timeout: 6_000, + }, + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + workers: process.env.CI ? 1 : undefined, + projects: [ + { + name: 'Chrome Stable', + use: { + browserName: 'chromium', + channel: 'chrome', + }, + }, + ], +}); diff --git a/packages/integrations/alpinejs/test/basics.test.ts b/packages/integrations/alpinejs/test/basics.test.ts index 440e2a6b5bc2..a7e1baa87b7a 100644 --- a/packages/integrations/alpinejs/test/basics.test.ts +++ b/packages/integrations/alpinejs/test/basics.test.ts @@ -8,6 +8,6 @@ test.describe('Basics', () => { await page.goto(astro.resolveUrl('/')); const el = page.locator('#foo'); - expect(await el.textContent()).toBe('bar'); + await expect(el).toHaveText('bar'); }); }); diff --git a/packages/integrations/alpinejs/test/directive.test.ts b/packages/integrations/alpinejs/test/directive.test.ts index 440e2a6b5bc2..93dd32461ac6 100644 --- a/packages/integrations/alpinejs/test/directive.test.ts +++ b/packages/integrations/alpinejs/test/directive.test.ts @@ -1,13 +1,13 @@ import { expect } from '@playwright/test'; import { prepareTestFactory } from './test-utils.js'; -const { test } = prepareTestFactory({ root: './fixtures/basics/' }); +const { test } = prepareTestFactory({ root: './fixtures/directive/' }); -test.describe('Basics', () => { +test.describe('Directive', () => { test('Alpine is working', async ({ page, astro }) => { await page.goto(astro.resolveUrl('/')); const el = page.locator('#foo'); - expect(await el.textContent()).toBe('bar'); + await expect(el).toHaveText('bar'); }); }); diff --git a/packages/integrations/alpinejs/test/plugin-script-import.test.ts b/packages/integrations/alpinejs/test/plugin-script-import.test.ts index c280e559750e..720c6dddc53a 100644 --- a/packages/integrations/alpinejs/test/plugin-script-import.test.ts +++ b/packages/integrations/alpinejs/test/plugin-script-import.test.ts @@ -8,6 +8,6 @@ test.describe('Plugin Script Import', () => { await page.goto(astro.resolveUrl('/')); const el = page.locator('#foo'); - expect(await el.getAttribute('hidden')).toBe(''); + await expect(el).toHaveAttribute('hidden', ''); }); }); diff --git a/packages/integrations/alpinejs/test/test-utils.ts b/packages/integrations/alpinejs/test/test-utils.ts index 16c57ff68553..d5ab28262a75 100644 --- a/packages/integrations/alpinejs/test/test-utils.ts +++ b/packages/integrations/alpinejs/test/test-utils.ts @@ -14,7 +14,7 @@ const testFiles = await fs.readdir(new URL('.', import.meta.url)); const testFileToPort = new Map(); for (let i = 0; i < testFiles.length; i++) { const file = testFiles[i]; - if (file.endsWith('.test.js')) { + if (file.endsWith('.test.ts')) { testFileToPort.set(file.slice(0, -8), 4000 + i); } }