chore: automatically detect the dev server (#29176)

This commit is contained in:
Pavel Feldman 2024-01-25 11:46:47 -08:00 committed by GitHub
parent 24ff2e2bad
commit 6a14b1dc51
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 23 additions and 7 deletions

View File

@ -181,8 +181,9 @@ export async function isURLAvailable(url: URL, ignoreHTTPSErrors: boolean, onLog
async function httpStatusCode(url: URL, ignoreHTTPSErrors: boolean, onLog?: (data: string) => void, onStdErr?: (data: string) => void): Promise<number> {
return new Promise(resolve => {
onLog?.(`HTTP GET: ${url}`);
onLog?.(`HTTP HEAD: ${url}`);
httpRequest({
method: 'HEAD',
url: url.toString(),
headers: { Accept: '*/*' },
rejectUnauthorized: !ignoreHTTPSErrors

View File

@ -56,7 +56,7 @@ export function createPlugin(
const endpoint = resolveEndpoint(config);
const protocol = endpoint.https ? 'https:' : 'http:';
const url = new URL(`${protocol}//${endpoint.host}:${endpoint.port}`);
if (process.env.PW_CT_DEV && await isURLAvailable(url, true)) {
if (await isURLAvailable(url, true)) {
// eslint-disable-next-line no-console
console.log(`Test Server is already running at ${url.toString()}, using it.\n`);
process.env.PLAYWRIGHT_TEST_BASE_URL = url.toString();

View File

@ -21,7 +21,12 @@ test.describe.configure({ mode: 'parallel' });
const playwrightConfig = `
import { defineConfig } from '@playwright/experimental-ct-react';
export default defineConfig({ projects: [{name: 'foo'}] });
export default defineConfig({
use: {
ctPort: ${3200 + (+process.env.TEST_PARALLEL_INDEX)}
},
projects: [{name: 'foo'}],
});
`;
test('should work with the empty component list', async ({ runInlineTest }, testInfo) => {

View File

@ -18,7 +18,12 @@ import { test, expect } from './playwright-test-fixtures';
const playwrightConfig = `
import { defineConfig } from '@playwright/experimental-ct-react';
export default defineConfig({ projects: [{name: 'foo'}] });
export default defineConfig({
use: {
ctPort: ${3200 + (+process.env.TEST_PARALLEL_INDEX)}
},
projects: [{name: 'foo'}],
});
`;
test('should work with TSX', async ({ runInlineTest }) => {
@ -420,7 +425,8 @@ test('should handle the vite host config', async ({ runInlineTest }) => {
test('pass component', async ({ page, mount }) => {
const component = await mount(<Component />);
await expect(page).toHaveURL('http://127.0.0.1:3100/');
const host = await page.evaluate(() => window.location.hostname);
await expect(host).toBe('127.0.0.1');
});
`,
}, { workers: 1 });

View File

@ -21,7 +21,11 @@ test.describe.configure({ mode: 'parallel', retries });
const basicTestTree = {
'playwright.config.ts': `
import { defineConfig } from '@playwright/experimental-ct-react';
export default defineConfig({});
export default defineConfig({
use: {
ctPort: ${3200 + (+process.env.TEST_PARALLEL_INDEX)}
}
});
`,
'playwright/index.html': `<script type="module" src="./index.ts"></script>`,
'playwright/index.ts': ``,

View File

@ -661,7 +661,7 @@ test('should check ipv4 and ipv6 with happy eyeballs when URL is passed', async
expect(result.exitCode).toBe(0);
expect(result.passed).toBe(1);
expect(result.output).toContain('Process started');
expect(result.output).toContain(`HTTP GET: http://localhost:${port}/`);
expect(result.output).toContain(`HTTP HEAD: http://localhost:${port}/`);
expect(result.output).toContain('WebServer available');
});