Skip to content

Commit

Permalink
try to get some tests passing (#5333)
Browse files Browse the repository at this point in the history
* try to get some tests passing

* increase timeout

* lint

* make everything run in serial

* ugh

* absolutely no clue why it suddenly cares about this

* why the hell not, just throw files at the problem at random

* ugh

* whyyyyy

* goddammit typescript why are you like this. fuck

* why does nothing work
  • Loading branch information
Rich-Harris committed Jul 1, 2022
1 parent 85fcc2f commit aae5c65
Show file tree
Hide file tree
Showing 15 changed files with 133 additions and 74 deletions.
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', () => {
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

0 comments on commit aae5c65

Please sign in to comment.