Skip to content

Commit 6f44ad7

Browse files
committed
jest for tests. livereload
1 parent be9ac16 commit 6f44ad7

8 files changed

+5511
-885
lines changed

package-lock.json

+5,395-871
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+46-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "svelte-3-rollup-typescript-vscode",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"description": "starter for svelte 3/rollup/typescript/vscode",
55
"keywords": [
66
"svelte",
@@ -16,25 +16,69 @@
1616
"email": "[email protected]"
1717
},
1818
"scripts": {
19-
"test": "echo \"Error: no test specified\" && exit 1",
2019
"cleanup": "rimraf ./build",
20+
"test": "cross-env NODE_ENV=test jest",
2121
"start": "npm run cleanup && cross-env NODE_ENV=development rollup --config --watch",
2222
"build": "npm run cleanup && cross-env NODE_ENV=production rollup --config"
2323
},
2424
"devDependencies": {
25+
"@babel/core": "7.4.5",
26+
"@babel/preset-env": "7.4.5",
27+
"@types/jest": "24.0.15",
28+
"babel-jest": "24.8.0",
2529
"chokidar": "3.0.1",
2630
"cross-env": "5.2.0",
31+
"deasync": "0.1.15",
32+
"jest": "24.8.0",
2733
"rimraf": "2.6.3",
2834
"rollup": "1.16.1",
2935
"rollup-plugin-bundle-html": "0.2.1",
3036
"rollup-plugin-commonjs": "10.0.0",
37+
"rollup-plugin-livereload": "1.0.1",
3138
"rollup-plugin-node-resolve": "5.0.4",
3239
"rollup-plugin-serve": "1.0.1",
3340
"rollup-plugin-svelte": "5.1.0",
3441
"rollup-plugin-terser": "5.0.0",
3542
"rollup-plugin-typescript2": "0.21.2",
3643
"svelte": "3.5.3",
3744
"svelte-ts-preprocess": "1.1.3",
45+
"ts-jest": "24.0.2",
3846
"typescript": "3.5.2"
47+
},
48+
"babel": {
49+
"presets": [
50+
"@babel/preset-env"
51+
]
52+
},
53+
"jest": {
54+
"collectCoverageFrom": [
55+
"./src/**/*.{js,jsx,ts,tsx}",
56+
"!**/*.d.ts"
57+
],
58+
"testMatch": [
59+
"<rootDir>/src/**/__tests__/**/*.(j|t)s?(x)",
60+
"<rootDir>/src/**/?(*.)(spec|test).(j|t)s?(x)"
61+
],
62+
"testEnvironment": "jsdom",
63+
"transform": {
64+
"^.+\\.tsx?$": "ts-jest",
65+
"^.+\\.js$": "babel-jest",
66+
"^.+\\.svelte$": "./svelte-jest.js"
67+
},
68+
"moduleFileExtensions": [
69+
"ts",
70+
"tsx",
71+
"js",
72+
"jsx",
73+
"json",
74+
"node",
75+
"mjs",
76+
"svelte"
77+
],
78+
"globals": {
79+
"ts-jest": {
80+
"tsConfig": "tsconfig.test.json"
81+
}
82+
}
3983
}
4084
}

rollup.config.js

+16-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
import svelte from "rollup-plugin-svelte";
2-
import commonjs from "rollup-plugin-commonjs";
3-
import resolve from "rollup-plugin-node-resolve";
4-
import serve from "rollup-plugin-serve";
5-
import html from "rollup-plugin-bundle-html";
6-
import typescript from "rollup-plugin-typescript2";
7-
import tscompile from "typescript";
8-
import { terser } from "rollup-plugin-terser";
1+
const svelte = require("rollup-plugin-svelte");
2+
const commonjs = require("rollup-plugin-commonjs");
3+
const resolve = require("rollup-plugin-node-resolve");
4+
const serve = require("rollup-plugin-serve");
5+
const html = require("rollup-plugin-bundle-html");
6+
const typescript = require("rollup-plugin-typescript2");
7+
const tscompile = require("typescript");
8+
const { terser } = require("rollup-plugin-terser");
9+
const livereload = require("rollup-plugin-livereload");
910

1011
const isProd = process.env.NODE_ENV === "production";
1112
const isDev = process.env.NODE_ENV === "development";
13+
const isTest = process.env.NODE_ENV === "test";
1214

1315
const plugins = [
1416
commonjs({ include: "node_modules/**" }),
@@ -17,7 +19,7 @@ const plugins = [
1719
dev: isProd ? false : true,
1820
extensions: [".svelte"],
1921
preprocess: require("./svelte.config.js").preprocess,
20-
css: css => css.write("build/css/style.css")
22+
css: isTest ? false : css => css.write("build/css/style.css")
2123
}),
2224
resolve({ browser: true }),
2325
html({
@@ -34,16 +36,20 @@ if (isDev) {
3436
openPage: "/index.html",
3537
historyApiFallback: "/index.html",
3638
contentBase: ["./build"]
39+
}),
40+
livereload({
41+
watch: "build"
3742
})
3843
);
3944
} else if (isProd) {
4045
plugins.push(terser({ sourcemap: true }));
4146
}
4247

43-
export default {
48+
module.exports = {
4449
input: "src/index.ts",
4550
output: {
4651
sourcemap: true,
52+
name: "main",
4753
file: "build/js/main.js",
4854
format: "iife"
4955
},

src/App.svelte.test.ts

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import App from "./App.svelte";
2+
3+
describe("App Component", () => {
4+
it("should render", () => {
5+
const el = document.createElement("div");
6+
new App({
7+
target: el,
8+
props: {
9+
name: "World"
10+
}
11+
});
12+
expect(el.textContent).not.toBeNull();
13+
});
14+
});

src/index.test.ts

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { target } from "./";
2+
3+
describe("Entry Script", () => {
4+
it("target dom element should contains textContent", () => {
5+
expect(target.textContent).not.toBeNull();
6+
});
7+
});

src/index.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import App from "./App.svelte";
22

3-
new App({
4-
target: document.body,
3+
export const target = document.body;
4+
5+
export const app = new App({
6+
target,
57
props: {
68
name: "World"
79
}

svelte-jest.js

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const deasync = require("deasync");
2+
const rollup = require("rollup");
3+
4+
const config = require("./rollup.config.js");
5+
6+
exports.process = (...args) => {
7+
const [, input] = args;
8+
const compiled = {};
9+
rollup
10+
.rollup({ input, plugins: config.plugins })
11+
.then(bundle => bundle.generate({ format: "cjs", sourcemap: true }))
12+
.then(({ output }) =>
13+
output.reduce((carry, record) => Object.assign(carry, record), compiled)
14+
)
15+
.catch(error => {
16+
throw error;
17+
});
18+
let count = 0;
19+
while (compiled === undefined || !compiled.code || !compiled.map) {
20+
if (count++ >= 100) {
21+
throw new Error("Can't compile svelte component for test");
22+
}
23+
deasync.runLoopOnce();
24+
}
25+
return compiled;
26+
};

tsconfig.test.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"extends": "./tsconfig.json"
3+
}

0 commit comments

Comments
 (0)