Skip to content
Snippets Groups Projects
Commit 585530ab authored by Chris's avatar Chris :medal:
Browse files

Merge branch '3-change-testing-framework-to-jest' into 'main'

Resolve "Change testing framework to Jest"

Closes #3

See merge request !1
parents 14e0ed81 31ee42bd
No related branches found
No related tags found
1 merge request!1Resolve "Change testing framework to Jest"
.snowpack .snowpack
build build
node_modules node_modules/
\ No newline at end of file .pnpm-store
// jest.config.js
// Example: extending a pre-built Jest configuration file
module.exports = {
...require('@snowpack/app-scripts-react/jest.config.js')(),
};
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
"scripts": { "scripts": {
"start": "snowpack dev", "start": "snowpack dev",
"build": "snowpack build", "build": "snowpack build",
"test": "web-test-runner \"src/**/*.test.tsx\"", "test": "jest \"src/**/*.test.tsx\" --coverage --watchAll",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"", "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
"lint": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\"" "lint": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\""
}, },
...@@ -21,18 +21,16 @@ ...@@ -21,18 +21,16 @@
"react-dom": "^17.0.0" "react-dom": "^17.0.0"
}, },
"devDependencies": { "devDependencies": {
"@snowpack/app-scripts-react": "^2.0.0",
"@snowpack/plugin-dotenv": "^2.0.5", "@snowpack/plugin-dotenv": "^2.0.5",
"@snowpack/plugin-react-refresh": "^2.4.0", "@snowpack/plugin-react-refresh": "^2.4.0",
"@snowpack/plugin-typescript": "^1.2.0", "@snowpack/plugin-typescript": "^1.2.0",
"@snowpack/web-test-runner-plugin": "^0.2.0",
"@testing-library/react": "^11.0.0", "@testing-library/react": "^11.0.0",
"@types/chai": "^4.2.13", "@types/jest": "^26.0.20",
"@types/mocha": "^8.2.0",
"@types/react": "^17.0.0", "@types/react": "^17.0.0",
"@types/react-dom": "^17.0.0", "@types/react-dom": "^17.0.0",
"@types/snowpack-env": "^2.3.2", "@types/snowpack-env": "^2.3.2",
"@web/test-runner": "^0.12.0", "jest-cli": "^26.6.3",
"chai": "^4.2.0",
"prettier": "^2.0.5", "prettier": "^2.0.5",
"rxjs": "^6.6.3", "rxjs": "^6.6.3",
"snowpack": "^3.0.11", "snowpack": "^3.0.11",
......
This diff is collapsed.
import * as React from 'react'; import * as React from 'react';
import { render } from '@testing-library/react'; import { render } from '@testing-library/react';
import { expect } from 'chai';
import App from './App'; import App from './App';
describe('<App>', () => { describe('<App>', () => {
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import logo from './logo.svg'; import logo from './logo.svg';
import './App.css'; import './App.css';
import Features from './Features';
interface AppProps {} interface AppProps {}
function App({}: AppProps) { function App({}: AppProps) {
// Create the count state.
const [count, setCount] = useState(0);
// Create the counter (+1 every second).
useEffect(() => {
const timer = setTimeout(() => setCount(count + 1), 1000);
return () => clearTimeout(timer);
}, [count, setCount]);
// Return the App component. // Return the App component.
return ( return (
<div className="App"> <div>learn react</div>
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>Boilerplate with: <Features/></p>
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<p>
Page has been open for <code>{count}</code> seconds.
</p>
<p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</p>
</header>
</div>
); );
} }
......
import React, { useEffect, useState } from 'react';
import { of, Observable } from 'rxjs';
function useObservable<T>(observable: Observable<T>, defaultState: T) {
const [state, setState] = useState(defaultState);
useEffect(() => {
const sub = observable.subscribe(setState);
return () => sub.unsubscribe();
}, [observable]);
return state;
};
function Features() {
// Fake a list of data received in some events..
const features$ = of(["React", "Snowpack", "TypeScript", "RxJs"]);
const features = useObservable<string[]>(features$, []);
// Return the Feature list.
return (
<ul>
{features.map(feature => <li>{feature}</li>)}
</ul>
);
}
export default Features;
// NODE_ENV=test - Needed by "@snowpack/web-test-runner-plugin"
process.env.NODE_ENV = 'test';
module.exports = {
plugins: [require('@snowpack/web-test-runner-plugin')()],
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment