Skip to content

Commit d115517

Browse files
authored
add configuration for jest (#2)
1 parent f4b53be commit d115517

File tree

7 files changed

+165
-21
lines changed

7 files changed

+165
-21
lines changed

.jest/setup.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import 'jest-axe/extend-expect';
2+
import '@testing-library/jest-dom/extend-expect';

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ module.exports = {
22
preset: '@anansi/jest-preset',
33
testEnvironment: 'jsdom',
44
modulePaths: ['src'],
5+
setupFilesAfterEnv: ["<rootDir>/.jest/setup.js"],
56
};

package.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,12 @@
5151
"@anansi/jest-preset": "0.8.2",
5252
"@babel/cli": "7.21.0",
5353
"@babel/core": "7.21.0",
54+
"@testing-library/jest-dom": "^5.16.5",
5455
"@testing-library/react": "^14.0.0",
5556
"@types/jest": "29.4.0",
57+
"@types/jest-axe": "^3.5.5",
58+
"@types/react": "^18.0.28",
59+
"@types/react-dom": "^18.0.11",
5660
"@types/react-test-renderer": "18.0.0",
5761
"@typescript-eslint/eslint-plugin": "^5.11.0",
5862
"@zerollup/ts-transform-paths": "1.7.18",
@@ -78,7 +82,9 @@
7882
"typescript": "4.9.5"
7983
},
8084
"dependencies": {
81-
"@babel/runtime": "7.21.0"
85+
"@babel/runtime": "7.21.0",
86+
"react": "^18.2.0",
87+
"react-dom": "^18.2.0"
8288
},
8389
"peerDependencies": {
8490
"react": "^18.2.0"

src/__tests__/index.test.ts

Lines changed: 0 additions & 10 deletions
This file was deleted.

src/__tests__/index.test.tsx

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { render } from '@testing-library/react';
2+
import { axe } from 'jest-axe';
3+
4+
import { createWizardFlow, useWizardFlow } from 'index';
5+
6+
enum TestSteps {
7+
step1,
8+
step2,
9+
step3,
10+
step4,
11+
}
12+
13+
const TestWizardFlow = createWizardFlow(TestSteps);
14+
15+
function Step({ header }: { header: string }) {
16+
const { transition, close } = useWizardFlow(TestWizardFlow);
17+
return (
18+
<div>
19+
<header>{header}</header>
20+
<button onClick={() => transition(TestSteps.step1)}>To Step 1</button>
21+
<button onClick={() => transition(TestSteps.step2)}>To Step 2</button>
22+
<button onClick={() => transition(TestSteps.step3)}>To Step 3</button>
23+
<button onClick={() => transition(TestSteps.step4)}>To Step 4</button>
24+
<button onClick={close}>Close</button>
25+
</div>
26+
);
27+
}
28+
29+
const STEPS = {
30+
[TestSteps.step1]: <Step header="Step 1" />,
31+
[TestSteps.step2]: <Step header="Step 2" />,
32+
[TestSteps.step3]: <Step header="Step 3" />,
33+
[TestSteps.step4]: <Step header="Step 4" />,
34+
};
35+
36+
describe('#react-wizard-flow', () => {
37+
it('should render a-ok', async () => {
38+
const { container, getByText } = render(
39+
<TestWizardFlow.Provider initialStep={TestSteps.step1} steps={STEPS} />,
40+
);
41+
expect(getByText('Step 1')).toBeVisible();
42+
const results = await axe(container);
43+
expect(results).toHaveNoViolations();
44+
});
45+
46+
it('should have functioning transitions', () => {
47+
expect(true).toBe(true);
48+
});
49+
50+
it('should have a functioning close callback', () => {
51+
expect(true).toBe(true);
52+
});
53+
54+
it('should not blow up without a close callback', () => {
55+
expect(true).toBe(true);
56+
});
57+
});

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"esModuleInterop": true,
1414
"experimentalDecorators": true,
1515
"emitDecoratorMetadata": true,
16-
"types": ["jest"],
16+
"types": ["node", "jest", "@testing-library/jest-dom"],
1717
"plugins": [
1818
{
1919
"transform": "@zerollup/ts-transform-paths"

yarn.lock

Lines changed: 97 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
# yarn lockfile v1
33

44

5+
"@adobe/css-tools@^4.0.1":
6+
version "4.2.0"
7+
resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855"
8+
integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==
9+
510
"@ampproject/remapping@^2.2.0":
611
version "2.2.0"
712
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
@@ -1163,7 +1168,7 @@
11631168
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
11641169
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
11651170

1166-
"@babel/[email protected]", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4":
1171+
"@babel/[email protected]", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
11671172
version "7.21.0"
11681173
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
11691174
integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
@@ -1642,6 +1647,21 @@
16421647
lz-string "^1.4.4"
16431648
pretty-format "^27.0.2"
16441649

1650+
"@testing-library/jest-dom@^5.16.5":
1651+
version "5.16.5"
1652+
resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e"
1653+
integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==
1654+
dependencies:
1655+
"@adobe/css-tools" "^4.0.1"
1656+
"@babel/runtime" "^7.9.2"
1657+
"@types/testing-library__jest-dom" "^5.9.1"
1658+
aria-query "^5.0.0"
1659+
chalk "^3.0.0"
1660+
css.escape "^1.5.1"
1661+
dom-accessibility-api "^0.5.6"
1662+
lodash "^4.17.15"
1663+
redent "^3.0.0"
1664+
16451665
"@testing-library/react@^14.0.0":
16461666
version "14.0.0"
16471667
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-14.0.0.tgz#59030392a6792450b9ab8e67aea5f3cc18d6347c"
@@ -1730,7 +1750,15 @@
17301750
dependencies:
17311751
"@types/istanbul-lib-report" "*"
17321752

1733-
1753+
"@types/jest-axe@^3.5.5":
1754+
version "3.5.5"
1755+
resolved "https://registry.yarnpkg.com/@types/jest-axe/-/jest-axe-3.5.5.tgz#21fd8152dc3963bf6e1f72f34a7ce4e827838b7b"
1756+
integrity sha512-b8WDIdoeKtr/JDJ2+QjFXMuS8UhfdMA6+15Z5KjjIie3jQrSXD9KZWMSQxc0nPtx7L9rIFKdiDpQk+m7s4a/8w==
1757+
dependencies:
1758+
"@types/jest" "*"
1759+
axe-core "^3.5.5"
1760+
1761+
"@types/jest@*", "@types/[email protected]":
17341762
version "29.4.0"
17351763
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206"
17361764
integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==
@@ -1777,7 +1805,7 @@
17771805
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
17781806
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
17791807

1780-
"@types/react-dom@^18.0.0":
1808+
"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.11":
17811809
version "18.0.11"
17821810
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33"
17831811
integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==
@@ -1791,7 +1819,7 @@
17911819
dependencies:
17921820
"@types/react" "*"
17931821

1794-
"@types/react@*":
1822+
"@types/react@*", "@types/react@^18.0.28":
17951823
version "18.0.28"
17961824
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
17971825
integrity sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==
@@ -1822,6 +1850,13 @@
18221850
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
18231851
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
18241852

1853+
"@types/testing-library__jest-dom@^5.9.1":
1854+
version "5.14.5"
1855+
resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f"
1856+
integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==
1857+
dependencies:
1858+
"@types/jest" "*"
1859+
18251860
"@types/tough-cookie@*":
18261861
version "4.0.2"
18271862
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397"
@@ -2181,6 +2216,11 @@ [email protected]:
21812216
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.1.tgz#04d561c11b6d76d096d34e9d14ba2c294fb20cdc"
21822217
integrity sha512-1exVbW0X1O/HSr/WMwnaweyqcWOgZgLiVxdLG34pvSQk4NlYQr9OUy0JLwuhFfuVNQzzqgH57eYzkFBCb3bIsQ==
21832218

2219+
axe-core@^3.5.5:
2220+
version "3.5.6"
2221+
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.6.tgz#e762a90d7f6dbd244ceacb4e72760ff8aad521b5"
2222+
integrity sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==
2223+
21842224
axe-core@^4.6.2:
21852225
version "4.6.3"
21862226
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece"
@@ -2505,6 +2545,14 @@ chalk@^2.0.0:
25052545
escape-string-regexp "^1.0.5"
25062546
supports-color "^5.3.0"
25072547

2548+
chalk@^3.0.0:
2549+
version "3.0.0"
2550+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
2551+
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
2552+
dependencies:
2553+
ansi-styles "^4.1.0"
2554+
supports-color "^7.1.0"
2555+
25082556
char-regex@^1.0.2:
25092557
version "1.0.2"
25102558
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
@@ -2682,6 +2730,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3:
26822730
shebang-command "^2.0.0"
26832731
which "^2.0.1"
26842732

2733+
css.escape@^1.5.1:
2734+
version "1.5.1"
2735+
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
2736+
integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==
2737+
26852738
cssom@^0.5.0:
26862739
version "0.5.0"
26872740
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
@@ -2841,7 +2894,7 @@ doctrine@^3.0.0:
28412894
dependencies:
28422895
esutils "^2.0.2"
28432896

2844-
dom-accessibility-api@^0.5.9:
2897+
dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
28452898
version "0.5.16"
28462899
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
28472900
integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
@@ -2872,9 +2925,9 @@ ecc-jsbn@~0.1.1:
28722925
safer-buffer "^2.1.0"
28732926

28742927
electron-to-chromium@^1.4.284:
2875-
version "1.4.306"
2876-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.306.tgz#3f16bc14e150ad79803145fffeaf0bee15d3fca7"
2877-
integrity sha512-1zGmLFfpcs2v7ELt/1HgLZF6Gm2CCHaAdNKxd9Ge4INSU/HDYWjs7fcWU6eVMmhkpwmh+52ZrGCUU+Ji9OJihA==
2928+
version "1.4.307"
2929+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.307.tgz#0301d9a87d95f47591550124a985a3eea6074a6f"
2930+
integrity sha512-n54V0t4LyHM2oQiAOmD3qC2peB+orUktXORSnWxqtv3uEMSoUcsq+hoMpU08VEJCNbfgBtzy169P0TcrLuq53A==
28782931

28792932
emittery@^0.13.1:
28802933
version "0.13.1"
@@ -4865,7 +4918,7 @@ [email protected], lodash.merge@^4.6.2:
48654918
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
48664919
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
48674920

4868-
lodash@^4.17.10, lodash@^4.17.21:
4921+
lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.21:
48694922
version "4.17.21"
48704923
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
48714924
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -4992,6 +5045,11 @@ mimic-fn@^2.1.0:
49925045
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
49935046
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
49945047

5048+
min-indent@^1.0.0:
5049+
version "1.0.1"
5050+
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
5051+
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
5052+
49955053
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
49965054
version "3.1.2"
49975055
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -5643,6 +5701,14 @@ randombytes@^2.1.0:
56435701
dependencies:
56445702
safe-buffer "^5.1.0"
56455703

5704+
react-dom@^18.2.0:
5705+
version "18.2.0"
5706+
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
5707+
integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
5708+
dependencies:
5709+
loose-envify "^1.1.0"
5710+
scheduler "^0.23.0"
5711+
56465712
"react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.2.0:
56475713
version "18.2.0"
56485714
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
@@ -5675,6 +5741,13 @@ [email protected]:
56755741
react-shallow-renderer "^16.15.0"
56765742
scheduler "^0.23.0"
56775743

5744+
react@^18.2.0:
5745+
version "18.2.0"
5746+
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
5747+
integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
5748+
dependencies:
5749+
loose-envify "^1.1.0"
5750+
56785751
read-package-json-fast@^2.0.1:
56795752
version "2.0.3"
56805753
resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83"
@@ -5703,6 +5776,14 @@ readdirp@~3.6.0:
57035776
dependencies:
57045777
picomatch "^2.2.1"
57055778

5779+
redent@^3.0.0:
5780+
version "3.0.0"
5781+
resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
5782+
integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
5783+
dependencies:
5784+
indent-string "^4.0.0"
5785+
strip-indent "^3.0.0"
5786+
57065787
regenerate-unicode-properties@^10.1.0:
57075788
version "10.1.0"
57085789
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c"
@@ -6254,6 +6335,13 @@ strip-final-newline@^2.0.0:
62546335
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
62556336
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
62566337

6338+
strip-indent@^3.0.0:
6339+
version "3.0.0"
6340+
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
6341+
integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
6342+
dependencies:
6343+
min-indent "^1.0.0"
6344+
62576345
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
62586346
version "3.1.1"
62596347
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"

0 commit comments

Comments
 (0)