Skip to content

Commit bc2ec52

Browse files
Added vitest example + README docs
1 parent 847e985 commit bc2ec52

File tree

4 files changed

+145
-17
lines changed

4 files changed

+145
-17
lines changed

packages/vitest/README.md

+58-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,60 @@
11
# Vitest + Currents
22

3-
👷🏾‍♀️ Work in progress
3+
Report test results generated by Vitest to Currents
4+
5+
## Setup
6+
7+
- Get a Record key and Project ID from Currents dashboard
8+
- Run Vitest tests using `vitest` command
9+
10+
```sh
11+
npm run test
12+
```
13+
14+
- Convert JUnit test results to Currents-compatible format
15+
16+
```sh
17+
npx currents convert \
18+
--input-format=junit \
19+
--input-file=results.xml \
20+
--framework=postman \
21+
--framework-version=v11.2.0
22+
```
23+
24+
- Upload the results to Currents
25+
26+
```sh
27+
npx currents upload --key=your-record-key --project-id=currents-project-id
28+
```
29+
30+
## Example
31+
32+
```bash
33+
# Run Vitest tests
34+
❯ npm run test
35+
36+
# Convert Vitest results to Currents results
37+
❯ npx currents convert \
38+
--input-format=junit \
39+
--input-file=results.xml \
40+
--framework=postman \
41+
--framework-version=v11.2.0
42+
[currents] Convertion files: results.xml
43+
[currents] Conversion completed, report saved to: /Users/miguelangarano/Documents/GitHub/generic-api-example/packages/vitest/.currents/2025-02-12T23-48-19-456Z-98201537-912f-4969-8bdc-a147003e8670
44+
45+
# Report the results to Currents
46+
❯ npx currents upload --key=xxx --project-id=yyy
47+
48+
Currents config: {
49+
projectId: 'kLfVfq',
50+
recordKey: '*****',
51+
removeTitleTags: false,
52+
disableTitleTags: false,
53+
debug: false
54+
}
55+
Report directory: /Users/agoldis/currents-junit-xml-example/packages/vitest/.currents/2024-11-27T21-14-06-189Z-24038566-8abf-42b5-910d-2af57dd4d3c6
56+
[Tests] Run created: https://app.currents.dev/run/178ad580f51fc637
57+
```
58+
59+
🎉
60+

packages/vitest/package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
"version": "1.0.0",
44
"description": "Integrate Vitest with Currents",
55
"main": "index.js",
6-
"scripts": {},
6+
"scripts": {
7+
"test": "vitest --outputFile.junit=./results.xml"
8+
},
79
"author": "",
810
"license": "MIT",
911
"dependencies": {
12+
"@currents/cmd": "^1.6.8",
1013
"vitest": "^2.1.5"
1114
}
1215
}

packages/vitest/results.xml

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<testsuites name="vitest tests" tests="12" failures="2" errors="0" time="0.204">
3+
<testsuite name="tests/numberUtils.spec.js" timestamp="2025-02-12T23:45:14.925Z" hostname="Miguels-Laptop.local" tests="6" failures="0" errors="0" skipped="0" time="0.001945375">
4+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; calculates average of positive numbers" time="0.000765917">
5+
</testcase>
6+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; handles array with single number" time="0.000145667">
7+
</testcase>
8+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; handles empty array" time="0.0000645">
9+
</testcase>
10+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; handles negative numbers" time="0.000065083">
11+
</testcase>
12+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; handles decimal numbers" time="0.000165375">
13+
</testcase>
14+
<testcase classname="tests/numberUtils.spec.js" name="calculateAverage &gt; returns 0 for invalid input" time="0.000067417">
15+
</testcase>
16+
</testsuite>
17+
<testsuite name="tests/stringUtils.spec.js" timestamp="2025-02-12T23:45:14.928Z" hostname="Miguels-Laptop.local" tests="6" failures="2" errors="0" skipped="0" time="0.006926833">
18+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; capitalizes first letter of each word" time="0.000788333">
19+
</testcase>
20+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; handles already capitalized words" time="0.0002145">
21+
</testcase>
22+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; handles empty string" time="0.000067667">
23+
</testcase>
24+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; handles single word" time="0.00006425">
25+
</testcase>
26+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; handles mixed case input" time="0.00415575">
27+
<failure message="expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality" type="AssertionError">
28+
AssertionError: expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality
29+
30+
Expected: &quot;Hello World!&quot;
31+
Received: &quot;Hello World&quot;
32+
33+
❯ tests/stringUtils.spec.js:22:44
34+
</failure>
35+
<failure message="expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality" type="AssertionError">
36+
AssertionError: expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality
37+
38+
Expected: &quot;Hello World!&quot;
39+
Received: &quot;Hello World&quot;
40+
41+
❯ tests/stringUtils.spec.js:22:44
42+
</failure>
43+
<failure message="expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality" type="AssertionError">
44+
AssertionError: expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality
45+
46+
Expected: &quot;Hello World!&quot;
47+
Received: &quot;Hello World&quot;
48+
49+
❯ tests/stringUtils.spec.js:22:44
50+
</failure>
51+
<failure message="expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality" type="AssertionError">
52+
AssertionError: expected &apos;Hello World&apos; to be &apos;Hello World!&apos; // Object.is equality
53+
54+
Expected: &quot;Hello World!&quot;
55+
Received: &quot;Hello World&quot;
56+
57+
❯ tests/stringUtils.spec.js:22:44
58+
</failure>
59+
</testcase>
60+
<testcase classname="tests/stringUtils.spec.js" name="capitalizeWords &gt; errors on number received" time="0.000967833">
61+
<failure message="str.split is not a function" type="TypeError">
62+
TypeError: str.split is not a function
63+
❯ Module.capitalizeWords stringUtils.js:4:6
64+
❯ tests/stringUtils.spec.js:26:12
65+
</failure>
66+
<failure message="str.split is not a function" type="TypeError">
67+
TypeError: str.split is not a function
68+
❯ Module.capitalizeWords stringUtils.js:4:6
69+
❯ tests/stringUtils.spec.js:26:12
70+
</failure>
71+
<failure message="str.split is not a function" type="TypeError">
72+
TypeError: str.split is not a function
73+
❯ Module.capitalizeWords stringUtils.js:4:6
74+
❯ tests/stringUtils.spec.js:26:12
75+
</failure>
76+
<failure message="str.split is not a function" type="TypeError">
77+
TypeError: str.split is not a function
78+
❯ Module.capitalizeWords stringUtils.js:4:6
79+
❯ tests/stringUtils.spec.js:26:12
80+
</failure>
81+
</testcase>
82+
</testsuite>
83+
</testsuites>

packages/vitest/tests/numberUtils.spec.js

-15
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,4 @@ describe("calculateAverage", () => {
2626
expect(calculateAverage(null)).toBe(0);
2727
expect(calculateAverage(undefined)).toBe(0);
2828
});
29-
it("timeout", async () => {
30-
const count = Number(process.env.TEST_ATTEMPTS || 0) + 1;
31-
process.env.TEST_ATTEMPTS = String(count);
32-
console.log("COUNT::", count, process.env.TEST_ATTEMPTS);
33-
34-
if (count < 3) {
35-
console.log("TIMEO::")
36-
expect(false).toBe(true);
37-
await new Promise((resolve) => setTimeout(resolve, 2000));
38-
}
39-
console.log("DEL::")
40-
41-
// Optional cleanup
42-
delete process.env.TEST_ATTEMPTS;
43-
});
4429
});

0 commit comments

Comments
 (0)