Skip to content

Commit 0ea3527

Browse files
authored
test: add test suite to snapshot current rendering (#16)
1 parent d6322db commit 0ea3527

File tree

5 files changed

+429
-150
lines changed

5 files changed

+429
-150
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ name: test
33
on:
44
push:
55
branches:
6-
- master
6+
- main
77
pull_request:
88
branches:
9-
- master
9+
- main
1010

1111
jobs:
1212
ci:
@@ -41,8 +41,8 @@ jobs:
4141
- name: Build
4242
run: yarn build
4343

44-
# - name: Test
45-
# run: yarn jest
44+
- name: Unit test
45+
run: yarn test:unit
4646

4747
# - name: Coverage
4848
# uses: codecov/codecov-action@v1

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,27 @@
2121
"dev": "rollup -c --watch",
2222
"lint": "eslint --ext .ts src",
2323
"release": "yarn test && yarn build && standard-version && git push --follow-tags && npm publish",
24-
"test": "yarn lint"
24+
"test": "yarn lint && yarn test:unit",
25+
"test:unit": "mocha -r jiti/register test/*.test.*"
2526
},
2627
"dependencies": {
2728
"bundle-runner": "^0.0.1"
2829
},
2930
"devDependencies": {
3031
"@nuxtjs/eslint-config-typescript": "latest",
3132
"@rollup/plugin-typescript": "latest",
33+
"@types/chai": "^4.2.21",
34+
"@types/mocha": "^9.0.0",
3235
"@vue/server-renderer": "latest",
36+
"chai": "^4.3.4",
3337
"eslint": "latest",
38+
"jiti": "^1.11.0",
39+
"mocha": "^9.0.3",
3440
"rollup": "latest",
3541
"rollup-plugin-babel": "latest",
3642
"rollup-plugin-node-resolve": "latest",
3743
"siroc": "latest",
3844
"standard-version": "latest",
39-
"ts-jest": "latest",
4045
"typescript": "latest"
4146
}
4247
}

test/fixtures/legacy-manifest.json

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"publicPath": "/_nuxt/",
3+
"all": [
4+
"../server/index.spa.html",
5+
"../server/index.ssr.html",
6+
"LICENSES",
7+
"app.css",
8+
"app.js",
9+
"commons/app.js",
10+
"pages/another.css",
11+
"pages/another.js",
12+
"pages/index.js",
13+
"runtime.js"
14+
],
15+
"initial": [
16+
"runtime.js",
17+
"commons/app.js",
18+
"app.css",
19+
"app.js"
20+
],
21+
"async": [
22+
"pages/another.css",
23+
"pages/another.js",
24+
"pages/index.js"
25+
],
26+
"modules": {
27+
"4d87aad8": [3,4],
28+
"630f1d84": [3,4],
29+
"56940b2e": [8]
30+
}
31+
}

test/renderer.test.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { expect } from 'chai'
2+
3+
import { createRenderer } from '../src/renderer'
4+
5+
import legacyManifest from './fixtures/legacy-manifest.json'
6+
7+
describe('renderer with legacy manifest', () => {
8+
const getRenderer = async () => {
9+
const renderer = createRenderer(() => { }, { clientManifest: legacyManifest as any, renderToString: () => '' })
10+
return await renderer.renderToString({
11+
_registeredComponents: new Set([
12+
'4d87aad8',
13+
'630f1d84',
14+
'56940b2e'
15+
])
16+
})
17+
}
18+
19+
it('renders scripts correctly', async () => {
20+
const { renderScripts } = await getRenderer()
21+
const result = renderScripts().split('</script>').slice(0, -1).map(s => `${s}</script>`).sort()
22+
expect(result).to.deep.equal(
23+
[
24+
'<script src="/_nuxt/app.js" defer></script>',
25+
'<script src="/_nuxt/commons/app.js" defer></script>',
26+
'<script src="/_nuxt/pages/index.js" defer></script>',
27+
'<script src="/_nuxt/runtime.js" defer></script>'
28+
]
29+
)
30+
})
31+
it('renders styles correctly', async () => {
32+
const { renderStyles } = await getRenderer()
33+
expect(renderStyles()).to.equal(
34+
'<link rel="stylesheet" href="/_nuxt/app.css">'
35+
)
36+
})
37+
it('renders resource hints correctly', async () => {
38+
const { renderResourceHints } = await getRenderer()
39+
const result = renderResourceHints().split('>').slice(0, -1).map(s => `${s}>`).sort()
40+
expect(result).to.deep.equal(
41+
[
42+
'<link rel="prefetch" href="/_nuxt/pages/another.css">', // dynamic import CSS
43+
'<link rel="prefetch" href="/_nuxt/pages/another.js">', // dynamic import
44+
'<link rel="preload" href="/_nuxt/app.css" as="style">', // entrypoint CSS
45+
'<link rel="preload" href="/_nuxt/app.js" as="script">',
46+
'<link rel="preload" href="/_nuxt/commons/app.js" as="script">',
47+
'<link rel="preload" href="/_nuxt/pages/index.js" as="script">', // dynamic entrypoint
48+
'<link rel="preload" href="/_nuxt/runtime.js" as="script">'
49+
]
50+
)
51+
})
52+
})

0 commit comments

Comments
 (0)