Skip to content
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

try to get some tests passing #5333

Merged
merged 11 commits into from Jul 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Expand Up @@ -22,7 +22,7 @@ jobs:
cache: pnpm
- run: pnpm install --frozen-lockfile
- run: cd packages/kit && pnpm build
- run: pnpm turbo run lint check
- run: pnpm turbo run lint check --force
Tests:
runs-on: ${{ matrix.os }}
timeout-minutes: 30
Expand Down
2 changes: 1 addition & 1 deletion packages/kit/package.json
Expand Up @@ -34,7 +34,7 @@
"marked": "^4.0.16",
"mime": "^3.0.0",
"node-fetch": "^3.2.4",
"port-authority": "^1.2.0",
"port-authority": "^2.0.1",
"rollup": "^2.75.3",
"selfsigned": "^2.0.1",
"set-cookie-parser": "^2.4.8",
Expand Down
109 changes: 55 additions & 54 deletions packages/kit/test/apps/basics/test/test.js
Expand Up @@ -6,7 +6,7 @@ import { start_server, test } from '../../../utils.js';

/** @typedef {import('@playwright/test').Response} Response */

test.describe.parallel('a11y', () => {
test.describe('a11y', () => {
test('resets focus', async ({ page, clicknav, browserName }) => {
const tab = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';

Expand Down Expand Up @@ -91,7 +91,7 @@ test.describe.parallel('a11y', () => {
});
});

test.describe.parallel('afterNavigate', () => {
test.describe('afterNavigate', () => {
test.skip(({ javaScriptEnabled }) => !javaScriptEnabled);

test('calls callback', async ({ page, clicknav }) => {
Expand All @@ -103,7 +103,7 @@ test.describe.parallel('afterNavigate', () => {
});
});

test.describe.parallel('beforeNavigate', () => {
test.describe('beforeNavigate', () => {
test.skip(({ javaScriptEnabled }) => !javaScriptEnabled);

test('prevents navigation triggered by link click', async ({ clicknav, page, baseURL }) => {
Expand Down Expand Up @@ -323,7 +323,7 @@ test.describe('Scrolling', () => {
});
});

test.describe.parallel('Imports', () => {
test.describe('Imports', () => {
test('imports from node_modules', async ({ page, clicknav }) => {
await page.goto('/imports');
await clicknav('[href="/imports/markdown"]');
Expand All @@ -350,7 +350,7 @@ test.describe.parallel('Imports', () => {
});
});

test.describe.parallel('Caching', () => {
test.describe('Caching', () => {
test('caches pages', async ({ request }) => {
const response = await request.get('/caching');
expect(response.headers()['cache-control']).toBe('public, max-age=30');
Expand Down Expand Up @@ -425,14 +425,14 @@ test.describe.parallel('Caching', () => {
});
});

test.describe.parallel('Content-Type', () => {
test.describe('Content-Type', () => {
test('sets Content-Type on page', async ({ request }) => {
const response = await request.get('/content-type-header');
expect(response.headers()['content-type']).toBe('text/html');
});
});

test.describe.parallel('CSS', () => {
test.describe('CSS', () => {
test('applies imported styles', async ({ page }) => {
await page.goto('/css');

Expand Down Expand Up @@ -493,7 +493,7 @@ test.describe.parallel('CSS', () => {
});
});

test.describe.parallel('Shadowed pages', () => {
test.describe('Shadowed pages', () => {
test('Loads props from an endpoint', async ({ page, clicknav }) => {
await page.goto('/shadowed');
await clicknav('[href="/shadowed/simple"]');
Expand Down Expand Up @@ -640,7 +640,7 @@ test.describe.parallel('Shadowed pages', () => {
});
});

test.describe.parallel('Endpoints', () => {
test.describe('Endpoints', () => {
test('calls a delete handler', async ({ page, javaScriptEnabled }) => {
if (javaScriptEnabled) {
await page.goto('/delete-route');
Expand Down Expand Up @@ -726,7 +726,7 @@ test.describe.parallel('Endpoints', () => {
});

test('allows return value to be a Response', async ({ request }) => {
const { server, port } = await start_server((req, res) => {
const { port, close } = await start_server((req, res) => {
res.writeHead(200, {
'X-Foo': 'bar'
});
Expand All @@ -740,7 +740,7 @@ test.describe.parallel('Endpoints', () => {
expect(await response.text()).toBe('ok');
expect(response.headers()['x-foo']).toBe('bar');
} finally {
server.close();
await close();
}
});

Expand Down Expand Up @@ -771,7 +771,7 @@ test.describe.parallel('Endpoints', () => {
});
});

test.describe.parallel('Encoded paths', () => {
test.describe('Encoded paths', () => {
test('visits a route with non-ASCII character', async ({ page, clicknav }) => {
await page.goto('/encoded');
await clicknav('[href="/encoded/苗条"]');
Expand Down Expand Up @@ -844,7 +844,7 @@ test.describe.parallel('Encoded paths', () => {
});
});

test.describe.parallel('Errors', () => {
test.describe('Errors', () => {
if (process.env.DEV) {
// TODO these probably shouldn't have the full render treatment,
// given that they will never be user-visible in prod
Expand Down Expand Up @@ -1150,7 +1150,7 @@ test.describe.parallel('Errors', () => {
});
});

test.describe.parallel('ETags', () => {
test.describe('ETags', () => {
test.skip(({ javaScriptEnabled }) => !javaScriptEnabled);

test('generates etag/304 for text body', async ({ request }) => {
Expand Down Expand Up @@ -1211,7 +1211,7 @@ test.describe.parallel('ETags', () => {
});
});

test.describe.parallel('Headers', () => {
test.describe('Headers', () => {
test('disables floc by default', async ({ page }) => {
const response = await page.goto('/headers');
const headers = /** @type {Response} */ (response).headers();
Expand All @@ -1224,7 +1224,7 @@ test.describe.parallel('Headers', () => {
});
});

test.describe.parallel('Load', () => {
test.describe('Load', () => {
benmccann marked this conversation as resolved.
Show resolved Hide resolved
test('fetch in root index.svelte works', async ({ page }) => {
await page.goto('/');
expect(await page.textContent('h1')).toBe('the answer is 42');
Expand Down Expand Up @@ -1380,35 +1380,36 @@ test.describe.parallel('Load', () => {
expect(await page.textContent('h1')).toBe('text.length is 5000000');
});

test('handles external api', async ({ page }) => {
await page.goto('/load');

test('handles external api', async ({ page, javaScriptEnabled }) => {
/** @type {string[]} */
const requested_urls = [];

const { port, server } = await start_server(async (req, res) => {
if (!req.url) throw new Error('Incomplete request');
requested_urls.push(req.url);

if (req.url === '/server-fetch-request-modified.json') {
res.writeHead(200, {
'Access-Control-Allow-Origin': '*',
'content-type': 'application/json'
});

res.end(JSON.stringify({ answer: 42 }));
} else {
res.statusCode = 404;
res.end('not found');
}
});
const { port, close } = await start_server(
async (req, res) => {
if (!req.url) throw new Error('Incomplete request');
requested_urls.push(req.url);

if (req.url === '/server-fetch-request-modified.json') {
res.writeHead(200, {
'Access-Control-Allow-Origin': '*',
'content-type': 'application/json'
});

res.end(JSON.stringify({ answer: 42 }));
} else {
res.statusCode = 404;
res.end('not found');
}
},
javaScriptEnabled ? 4000 : 4001
);

await page.goto(`/load/server-fetch-request?port=${port}`);

expect(requested_urls).toEqual(['/server-fetch-request-modified.json']);
expect(await page.textContent('h1')).toBe('the answer is 42');

server.close();
await close();
});

test('makes credentialed fetches to endpoints by default', async ({ page, clicknav }) => {
Expand Down Expand Up @@ -1524,7 +1525,7 @@ test.describe.parallel('Load', () => {
});
});

test.describe.parallel('Method overrides', () => {
test.describe('Method overrides', () => {
test('http method is overridden via URL parameter', async ({ page }) => {
await page.goto('/method-override');

Expand Down Expand Up @@ -1570,7 +1571,7 @@ test.describe.parallel('Method overrides', () => {
});
});

test.describe.parallel('Nested layouts', () => {
test.describe('Nested layouts', () => {
test('renders a nested layout', async ({ page }) => {
await page.goto('/nested-layout');

Expand Down Expand Up @@ -1630,7 +1631,7 @@ test.describe.parallel('Nested layouts', () => {
});
});

test.describe.parallel('Page options', () => {
test.describe('Page options', () => {
test('does not hydrate page with hydrate=false', async ({ page, javaScriptEnabled }) => {
await page.goto('/no-hydrate');

Expand Down Expand Up @@ -1728,7 +1729,7 @@ test.describe.parallel('Page options', () => {
});
});

test.describe.parallel('$app/paths', () => {
test.describe('$app/paths', () => {
test('includes paths', async ({ page }) => {
await page.goto('/paths');

Expand All @@ -1752,7 +1753,7 @@ test.describe.parallel('$app/paths', () => {
});
});

test.describe.parallel('$app/stores', () => {
test.describe('$app/stores', () => {
test('can access page.url', async ({ baseURL, page }) => {
await page.goto('/origin');
expect(await page.textContent('h1')).toBe(baseURL);
Expand Down Expand Up @@ -1852,7 +1853,7 @@ test.describe.parallel('$app/stores', () => {
});
});

test.describe.parallel('searchParams', () => {
test.describe('searchParams', () => {
const tests = [
{
description: 'exposes query string parameters',
Expand Down Expand Up @@ -1899,7 +1900,7 @@ test.describe.parallel('searchParams', () => {
});
});

test.describe.parallel('Redirects', () => {
test.describe('Redirects', () => {
test('redirect', async ({ baseURL, page, clicknav, back }) => {
await page.goto('/redirect');

Expand Down Expand Up @@ -1988,7 +1989,7 @@ test.describe.parallel('Redirects', () => {
});
});

test.describe.parallel('Prefetching', () => {
test.describe('Prefetching', () => {
test('prefetches programmatically', async ({ baseURL, page, app, javaScriptEnabled }) => {
if (javaScriptEnabled) {
await page.goto('/routing/a');
Expand Down Expand Up @@ -2070,7 +2071,7 @@ test.describe.parallel('Prefetching', () => {
});
});

test.describe.parallel('Routing', () => {
test.describe('Routing', () => {
test('redirects from /routing/ to /routing', async ({
baseURL,
page,
Expand Down Expand Up @@ -2339,15 +2340,15 @@ test.describe.parallel('Routing', () => {
});

test('ignores navigation to URLs the app does not own', async ({ page }) => {
const { port, server } = await start_server((req, res) => res.end('ok'));
const { port, close } = await start_server((req, res) => res.end('ok'));

await page.goto(`/routing?port=${port}`);
await Promise.all([
page.click(`[href="http://localhost:${port}"]`),
page.waitForURL(`http://localhost:${port}/`)
]);

server.close();
await close();
});

test('watch new route in dev', async ({ page }) => {
Expand All @@ -2366,7 +2367,7 @@ test.describe.parallel('Routing', () => {

try {
fs.writeFileSync(filePath, `<h1>${content}</h1>`);
await page.waitForTimeout(250); // this is the rare time we actually need waitForTimeout; we have no visibility into whether the module graph has been invalidated
await page.waitForTimeout(500); // this is the rare time we actually need waitForTimeout; we have no visibility into whether the module graph has been invalidated
await page.goto(`/routing/${route}`);

expect(await page.textContent('h1')).toBe(content);
Expand Down Expand Up @@ -2503,7 +2504,7 @@ test.describe.parallel('Routing', () => {
});
});

test.describe.parallel('Session', () => {
test.describe('Session', () => {
test('session is available', async ({ page, javaScriptEnabled }) => {
await page.goto('/session');

Expand All @@ -2518,7 +2519,7 @@ test.describe.parallel('Session', () => {
});
});

test.describe.parallel('Shadow DOM', () => {
test.describe('Shadow DOM', () => {
test('client router captures anchors in shadow dom', async ({
app,
page,
Expand All @@ -2545,7 +2546,7 @@ test.describe.parallel('Shadow DOM', () => {
});
});

test.describe.parallel('Static files', () => {
test.describe('Static files', () => {
test('static files', async ({ request }) => {
let response = await request.get('/static.json');
expect(await response.json()).toBe('static file');
Expand Down Expand Up @@ -2582,7 +2583,7 @@ test.describe.parallel('Static files', () => {
});
});

test.describe.parallel('Matchers', () => {
test.describe('Matchers', () => {
test('Matches parameters', async ({ page, clicknav }) => {
await page.goto('/routing/matched');

Expand All @@ -2600,7 +2601,7 @@ test.describe.parallel('Matchers', () => {
});
});

test.describe.parallel('XSS', () => {
test.describe('XSS', () => {
test('replaces %sveltekit.xxx% tags safely', async ({ page }) => {
await page.goto('/unsafe-replacement');

Expand Down Expand Up @@ -2647,7 +2648,7 @@ test.describe.parallel('XSS', () => {
});
});

test.describe.parallel('Miscellaneous', () => {
test.describe('Miscellaneous', () => {
test('Components are not double-mounted', async ({ page, javaScriptEnabled }) => {
const file = fileURLToPath(new URL('../src/routes/double-mount/index.svelte', import.meta.url));
const contents = fs.readFileSync(file, 'utf-8');
Expand Down
4 changes: 2 additions & 2 deletions packages/kit/test/apps/options-2/test/test.js
Expand Up @@ -3,7 +3,7 @@ import { test } from '../../../utils.js';

/** @typedef {import('@playwright/test').Response} Response */

test.describe.parallel('paths.base', () => {
test.describe('paths.base', () => {
test('serves /basepath', async ({ page }) => {
await page.goto('/basepath');
expect(await page.textContent('h1')).toBe('Hello');
Expand All @@ -15,7 +15,7 @@ test.describe.parallel('paths.base', () => {
});
});

test.describe.parallel('Service worker', () => {
test.describe('Service worker', () => {
if (!process.env.DEV) {
test('build /basepath/service-worker.js', async ({ request }) => {
const response = await request.get('/basepath/service-worker.js');
Expand Down