Skip to content

Commit

Permalink
add failing test for #754
Browse files Browse the repository at this point in the history
  • Loading branch information
Rich-Harris committed Apr 23, 2021
1 parent 2e15946 commit d6f4c3b
Show file tree
Hide file tree
Showing 13 changed files with 127 additions and 2 deletions.
5 changes: 5 additions & 0 deletions packages/adapter-static/test/apps/spa/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.DS_Store
node_modules
/.svelte
/build
/functions
1 change: 1 addition & 0 deletions packages/adapter-static/test/apps/spa/.npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
engine-strict=true
38 changes: 38 additions & 0 deletions packages/adapter-static/test/apps/spa/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# create-svelte

Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte);

## Creating a project

If you're seeing this, you've probably already done this step. Congrats!

```bash
# create a new project in the current directory
npm init svelte@next

# create a new project in my-app
npm init svelte@next my-app
```

> Note: the `@next` is temporary
## Developing

Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:

```bash
npm run dev

# or start the server and open the app in a new browser tab
npm run dev -- --open
```

## Building

Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then:

```bash
npm run build
```

> You can preview the built app with `npm start`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production.
9 changes: 9 additions & 0 deletions packages/adapter-static/test/apps/spa/jsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"$lib/*": ["src/lib/*"]
}
},
"include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"]
}
16 changes: 16 additions & 0 deletions packages/adapter-static/test/apps/spa/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"name": "~TODO~",
"version": "0.0.1",
"scripts": {
"dev": "svelte-kit dev",
"build": "svelte-kit build",
"start": "svelte-kit start"
},
"devDependencies": {
"@sveltejs/adapter-node": "next",
"@sveltejs/kit": "next",
"svelte": "^3.29.0",
"vite": "^2.1.0"
},
"type": "module"
}
12 changes: 12 additions & 0 deletions packages/adapter-static/test/apps/spa/src/app.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
%svelte.head%
</head>
<body>
<div id="svelte">%svelte.body%</div>
</body>
</html>
3 changes: 3 additions & 0 deletions packages/adapter-static/test/apps/spa/src/global.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/// <reference types="@sveltejs/kit" />
/// <reference types="svelte" />
/// <reference types="vite/client" />
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<nav>
<a href="/">home</a>
<a href="/about">about</a>
</nav>

<slot></slot>
5 changes: 5 additions & 0 deletions packages/adapter-static/test/apps/spa/src/routes/about.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<script context="module">
export const prerender = true;
</script>

<h1>This page was prerendered</h1>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<h1>This page was not prerendered</h1>
9 changes: 9 additions & 0 deletions packages/adapter-static/test/apps/spa/svelte.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
/** @type {import('@sveltejs/kit').Config} */
module.exports = {
kit: {
adapter: require('../../../index.cjs')({
fallback: '200.html'
}),
target: '#svelte'
}
};
20 changes: 19 additions & 1 deletion packages/adapter-static/test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,25 @@ run('prerendered', (test) => {

test('prerenders content', async ({ base, page }) => {
await page.goto(base);

assert.equal(await page.textContent('h1'), 'This page was prerendered');
});
});

run('spa', (test) => {
test('generates a fallback page', ({ cwd }) => {
assert.ok(fs.existsSync(`${cwd}/build/200.html`));
});

test('does not prerender pages without prerender=true', ({ cwd }) => {
assert.ok(fs.existsSync(`${cwd}/build/index.html`));
});

test('prerenders page with prerender=true', ({ cwd }) => {
assert.ok(fs.existsSync(`${cwd}/build/about.html`));
});

test('renders content in fallback page when JS runs', async ({ base, page }) => {
await page.goto(base);
assert.equal(await page.textContent('h1'), 'This page was not prerendered');
});
});
4 changes: 3 additions & 1 deletion packages/adapter-static/test/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ export function run(app, callback) {

context.cwd = cwd;
context.port = await ports.find(4000);
const handler = sirv(`${cwd}/build`);
const handler = sirv(`${cwd}/build`, {
single: '200.html'
});
context.server = await create_server(context.port, handler);

context.base = `http://localhost:${context.port}`;
Expand Down

0 comments on commit d6f4c3b

Please sign in to comment.