Skip to content

Commit c60855c

Browse files
authored
Merge pull request cibernox#10 from cibernox/add-vitest
Add vitest
2 parents 5523b38 + e6dc5b5 commit c60855c

File tree

8 files changed

+2802
-354
lines changed

8 files changed

+2802
-354
lines changed

package-lock.json

Lines changed: 2733 additions & 339 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,30 @@
55
"dev": "svelte-kit dev",
66
"build": "svelte-kit build",
77
"preview": "svelte-kit preview",
8+
"test": "vitest run",
9+
"test:dev": "vitest dev",
810
"check": "svelte-check --tsconfig ./tsconfig.json",
911
"check:watch": "svelte-check --tsconfig ./tsconfig.json --watch"
1012
},
1113
"devDependencies": {
1214
"@sveltejs/adapter-netlify": "next",
1315
"@sveltejs/kit": "next",
16+
"@testing-library/svelte": "^3.0.3",
1417
"@types/cookie": "^0.4.1",
18+
"autoprefixer": "^10.4.0",
19+
"chai-dom": "^1.11.0",
20+
"cssnano": "^5.0.14",
21+
"jsdom": "^19.0.0",
22+
"postcss": "^8.4.5",
23+
"postcss-load-config": "^3.1.0",
1524
"svelte": "^3.45.0",
1625
"svelte-check": "^2.2.11",
1726
"svelte-preprocess": "^4.10.1",
27+
"tailwindcss": "^3.0.11",
1828
"tslib": "^2.3.1",
1929
"typescript": "^4.5.4",
20-
"postcss": "^8.4.5",
21-
"postcss-load-config": "^3.1.0",
22-
"autoprefixer": "^10.4.0",
23-
"cssnano": "^5.0.14",
24-
"tailwindcss": "^3.0.11"
30+
"vitest": "^0.0.138",
31+
"vite-plugin-svelte-inline-compile": "^0.0.1"
2532
},
2633
"type": "module",
2734
"dependencies": {

src/lib/DefinitionEntry.svelte

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
<script>
22
export let background;
33
</script>
4-
<div class="{background === 'gray' ? 'bg-gray-50' : 'bg-white'} px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
4+
<div
5+
data-testid="definition-entry"
6+
class="{background === 'gray' ? 'bg-gray-50' : 'bg-white'} px-4 py-5 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-6">
57
<dt class="text-sm font-medium text-gray-500">
68
<slot name="dt"/>
79
</dt>

src/lib/Playground.svelte

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script lang="ts">
2-
import { t } from "precompile-intl-runtime";
32
let translations = `{
43
"header": "Svelte Intl Precompile is {adjective}",
54
"posted-on": "Posted on {postDate, date, long}",

svelte.config.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ import preprocess from 'svelte-preprocess';
22
import netlify from '@sveltejs/adapter-netlify';
33
import precompileIntl from "svelte-intl-precompile/sveltekit-plugin";
44

5+
export const sveltekitViteConfig = {
6+
plugins: [
7+
precompileIntl('locales') // if your translations are defined in /locales/[lang].json
8+
],
9+
ssr: {
10+
external: ['@babel/core', 'babel-plugin-precompile-intl']
11+
},
12+
}
13+
514
/** @type {import('@sveltejs/kit').Config} */
615
const config = {
716
// Consult https://github.com/sveltejs/svelte-preprocess
@@ -16,14 +25,7 @@ const config = {
1625
adapter: netlify(),
1726
// hydrate the <div id="svelte"> element in src/app.html
1827
target: "#svelte",
19-
vite: {
20-
plugins: [
21-
precompileIntl('locales') // if your translations are defined in /locales/[lang].json
22-
],
23-
ssr: {
24-
external: ['@babel/core', 'babel-plugin-precompile-intl']
25-
}
26-
}
28+
vite: sveltekitViteConfig
2729
},
2830
};
2931

tests/DefinitionEntrt.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { cleanup, render } from '@testing-library/svelte'
2+
import DefinitionEntry from '$lib/DefinitionEntry.svelte';
3+
import svelte from 'svelte-inline-compile';
4+
5+
describe('DefinitionEntry.svelte', () => {
6+
// TODO: @testing-library/svelte claims to add this automatically but it doesn't work without explicit afterEach
7+
afterEach(() => cleanup())
8+
9+
it('renders a link with the given href', () => {
10+
const { getByTestId } = render(svelte`
11+
<DefinitionEntry background="gray"></DefinitionEntry>
12+
`)
13+
expect(getByTestId('definition-entry')).to.have.class('bg-gray-50');
14+
});
15+
});

tests/setup.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import chai from 'chai';
2+
import chaiDom from 'chai-dom';
3+
chai.use(chaiDom);

vitest.config.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { defineConfig } from 'vite'
2+
import { svelte } from '@sveltejs/vite-plugin-svelte'
3+
import { sveltekitViteConfig } from './svelte.config.js'
4+
import path from 'path';
5+
import svelteInlineCompile from 'vite-plugin-svelte-inline-compile';
6+
7+
export default defineConfig({
8+
...sveltekitViteConfig,
9+
plugins: [
10+
svelte({
11+
hot: !process.env.VITEST,
12+
compilerOptions: { format: "cjs" }
13+
}),
14+
svelteInlineCompile(),
15+
],
16+
test: {
17+
global: true,
18+
environment: 'jsdom',
19+
setupFiles: ['./tests/setup.js'],
20+
},
21+
resolve: {
22+
alias: {
23+
$lib: path.resolve('./src/lib'),
24+
},
25+
},
26+
})

0 commit comments

Comments
 (0)