Skip to content

Commit 3cfa204

Browse files
feat: added wdio working example with instructions, update cmd package
1 parent 5aea8fc commit 3cfa204

11 files changed

+2918
-1208
lines changed

package-lock.json

+2,706-1,146
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"scripts": {},
1414
"license": "MIT",
1515
"dependencies": {
16-
"@currents/cmd": "^1.6.0"
16+
"@currents/cmd": "^1.6.8"
1717
},
1818
"devDependencies": {
1919
"dotenv-cli": "^7.4.3"

packages/postman/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {},
77
"license": "MIT",
88
"dependencies": {
9-
"@currents/cmd": "^1.6.0",
9+
"@currents/cmd": "^1.6.8",
1010
"newman": "^6.2.1",
1111
"xml2js": "^0.6.2"
1212
}

packages/wdio/README.md

+70-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,72 @@
11
# WebdriverIO + Currents
22

3-
👷🏾‍♀️ Work in progress
3+
Report test results generated by Webdriver.io to Currents
4+
5+
## Setup
6+
7+
- Get a Record key and Project ID from Currents dashboard
8+
- Run wdio tests using `wdio run`
9+
10+
```sh
11+
npx wdio run ./wdio.conf.js
12+
```
13+
14+
- Combine the report files using the combine script
15+
Wdio will generate one JUnit XML file per spec file (Two files in this example) and must be combined as it belongs to the same group.
16+
17+
```sh
18+
node ../../scripts/combineResults.js
19+
```
20+
21+
This will generate a file named `combined-results.xml` with the combined results of all the spec files.
22+
23+
- Convert the combined JUnit XML test results to Currents-compatible format
24+
25+
```sh
26+
npx currents convert \
27+
--input-format=junit \
28+
--input-file=combined-results.xml \
29+
--framework=wdio \
30+
--framework-version=v11.2.0
31+
```
32+
33+
- Upload the results to Currents
34+
35+
```sh
36+
npx currents upload --key=your-record-key --project-id=currents-project-id
37+
```
38+
39+
## Example
40+
41+
```bash
42+
# Run Wdio tests
43+
❯ npx wdio run ./wdio.conf.js
44+
45+
# Combine Wdio test results
46+
❯ node ../../scripts/combineResults.js
47+
48+
# Convert Wdio combined results to Currents results
49+
❯ npx currents convert \
50+
--input-format=junit \
51+
--input-file=combined-results.xml \
52+
--framework=wdio \
53+
--framework-version=v11.2.0
54+
[currents] Convertion files: combined-results.xml
55+
[currents] Conversion completed, report saved to: /Users/agoldis/currents-junit-xml-example/packages/postman/.currents/2024-11-27T21-14-06-189Z-24038566-8abf-42b5-910d-2af57dd4d3c6
56+
57+
# Report the results to Currents
58+
❯ npx currents upload --key=xxx --project-id=yyy
59+
60+
Currents config: {
61+
projectId: 'kLfVfq',
62+
recordKey: '*****',
63+
removeTitleTags: false,
64+
disableTitleTags: false,
65+
debug: false
66+
}
67+
Report directory: /Users/agoldis/currents-junit-xml-example/packages/postman/.currents/2024-11-27T21-14-06-189Z-24038566-8abf-42b5-910d-2af57dd4d3c6
68+
[Tests] Run created: https://app.currents.dev/run/178ad580f51fc637
69+
```
70+
71+
🎉
72+

packages/wdio/combined-results.xml

+44-44
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,64 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<testsuites>
3-
<testsuite name="My Login application incorrect" timestamp="2024-11-20T11:55:55" time="5.25" tests="1" failures="1" errors="0" skipped="0">
2+
<testsuites name="junit">
3+
<testsuite name="My Login application" timestamp="2025-03-05T21:48:05" time="12.516" tests="1" failures="0" errors="0" skipped="0">
4+
<properties>
5+
<property name="specId" value="0"/>
6+
<property name="suiteName" value="My Login application"/>
7+
<property name="capabilities" value="chrome.133_0_6943_142.mac"/>
8+
<property name="file" value="file://./tests/test.e2e.js"/>
9+
</properties>
10+
<testcase classname="chrome.133_0_6943_142.mac.My_Login_application" name="should login with valid credentials" time="12.516" file="file://./tests/test.e2e.js">
11+
<system-out>
12+
COMMAND: POST /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.4F75C642ABB1F497A997B7E6AAF2B38E.e.4/clear - {}
13+
RESULT: {}
14+
COMMAND: POST /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.4F75C642ABB1F497A997B7E6AAF2B38E.e.4/value - {"text":"tomsmith"}
15+
RESULT: {"text":"tomsmith"}
16+
COMMAND: POST /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.4F75C642ABB1F497A997B7E6AAF2B38E.e.6/clear - {}
17+
RESULT: {}
18+
COMMAND: POST /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.4F75C642ABB1F497A997B7E6AAF2B38E.e.6/value - {"text":"SuperSecretPassword!"}
19+
RESULT: {"text":"SuperSecretPassword!"}
20+
COMMAND: POST /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.4F75C642ABB1F497A997B7E6AAF2B38E.e.7/click - {}
21+
RESULT: {}
22+
COMMAND: GET /session/d28d5b27606b8b527e8ef73c702518da/element/f.A1ECE5959874E86807503D32DD52B874.d.60481C78D25494D9D09EF043150B6988.e.15/text - {}
23+
RESULT: {}
24+
COMMAND: DELETE /session/d28d5b27606b8b527e8ef73c702518da - {}
25+
RESULT: {}
26+
</system-out>
27+
</testcase>
28+
</testsuite>
29+
<testsuite name="My Login application incorrect" timestamp="2025-03-05T21:48:05" time="9.029" tests="1" failures="1" errors="0" skipped="0">
430
<properties>
531
<property name="specId" value="0"/>
632
<property name="suiteName" value="My Login application incorrect"/>
7-
<property name="capabilities" value="chrome.131_0_6778_85.mac"/>
8-
<property name="file" value="file://./wdio-example/tests/signup.e2e.js"/>
33+
<property name="capabilities" value="chrome.133_0_6943_142.mac"/>
34+
<property name="file" value="file://./tests/signup.e2e.js"/>
935
</properties>
10-
<testcase classname="chrome.131_0_6778_85.mac.My_Login_application_incorrect" name="should not login with invalid credentials" time="5.248" file="file://./wdio-example/tests/signup.e2e.js">
36+
<testcase classname="chrome.133_0_6943_142.mac.My_Login_application_incorrect" name="should not login with invalid credentials" time="9.028" file="file://./tests/signup.e2e.js">
1137
<failure message="Expect to have text&#xA;&#xA;Expected: StringContaining &quot;You logged into a secure area!&quot;&#xA;Received: &quot;Your password is invalid!&#xA;×&quot;"/>
1238
<system-out>
13-
COMMAND: POST /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.603FDC276C7E6B2DE2B2F05E4F9D6BDA.e.4/clear - {}
39+
COMMAND: POST /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.5876FBC25E6DB0209F13AA1D9B931480.e.4/clear - {}
1440
RESULT: {}
15-
COMMAND: POST /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.603FDC276C7E6B2DE2B2F05E4F9D6BDA.e.4/value - {"text":"tomsmith"}
41+
COMMAND: POST /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.5876FBC25E6DB0209F13AA1D9B931480.e.4/value - {"text":"tomsmith"}
1642
RESULT: {"text":"tomsmith"}
17-
COMMAND: POST /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.603FDC276C7E6B2DE2B2F05E4F9D6BDA.e.6/clear - {}
43+
COMMAND: POST /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.5876FBC25E6DB0209F13AA1D9B931480.e.6/clear - {}
1844
RESULT: {}
19-
COMMAND: POST /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.603FDC276C7E6B2DE2B2F05E4F9D6BDA.e.6/value - {"text":"123"}
45+
COMMAND: POST /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.5876FBC25E6DB0209F13AA1D9B931480.e.6/value - {"text":"123"}
2046
RESULT: {"text":"123"}
21-
COMMAND: POST /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.603FDC276C7E6B2DE2B2F05E4F9D6BDA.e.7/click - {}
47+
COMMAND: POST /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.5876FBC25E6DB0209F13AA1D9B931480.e.7/click - {}
2248
RESULT: {}
23-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
49+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
2450
RESULT: {}
25-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
51+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
2652
RESULT: {}
27-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
53+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
2854
RESULT: {}
29-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
55+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
3056
RESULT: {}
31-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
57+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
3258
RESULT: {}
33-
COMMAND: GET /session/d508f942d7ce0715a049272f75f5c966/element/f.BAF1F24B5CBDD3534E5773E3374C2986.d.6F3ADC9B60412FBEC2B0CC2606B227EA.e.18/text - {}
59+
COMMAND: GET /session/40e5c2b2d240affe8aec1cf1dc4abd26/element/f.136C2CA46E0F93D56F5469476EBB1733.d.008FE291D81685041CDCC7C6158B5505.e.19/text - {}
3460
RESULT: {}
35-
COMMAND: DELETE /session/d508f942d7ce0715a049272f75f5c966 - {}
61+
COMMAND: DELETE /session/40e5c2b2d240affe8aec1cf1dc4abd26 - {}
3662
RESULT: {}
3763
</system-out>
3864
<system-err>
@@ -41,34 +67,8 @@ Error: Expect to have text
4167
Expected: StringContaining "You logged into a secure area!"
4268
Received: "Your password is invalid!
4369
×"
44-
at Context.&lt;anonymous&gt; (/Users/miguelangarano/Documents/GitHub/generic-api-example/wdio-example/tests/signup.e2e.js:11:41)
70+
at Context.&lt;anonymous&gt; (/Users/miguelangarano/Documents/GitHub/currents-junit-xml-example/packages/wdio/tests/signup.e2e.js:11:41)
4571
</system-err>
4672
</testcase>
4773
</testsuite>
48-
<testsuite name="My Login application" timestamp="2024-11-20T11:55:55" time="2.43" tests="1" failures="0" errors="0" skipped="0">
49-
<properties>
50-
<property name="specId" value="0"/>
51-
<property name="suiteName" value="My Login application"/>
52-
<property name="capabilities" value="chrome.131_0_6778_85.mac"/>
53-
<property name="file" value="file://./wdio-example/tests/test.e2e.js"/>
54-
</properties>
55-
<testcase classname="chrome.131_0_6778_85.mac.My_Login_application" name="should login with valid credentials" time="2.429" file="file://./wdio-example/tests/test.e2e.js">
56-
<system-out>
57-
COMMAND: POST /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.ECDD0D49BE555B0547226577CC9AA755.e.4/clear - {}
58-
RESULT: {}
59-
COMMAND: POST /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.ECDD0D49BE555B0547226577CC9AA755.e.4/value - {"text":"tomsmith"}
60-
RESULT: {"text":"tomsmith"}
61-
COMMAND: POST /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.ECDD0D49BE555B0547226577CC9AA755.e.6/clear - {}
62-
RESULT: {}
63-
COMMAND: POST /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.ECDD0D49BE555B0547226577CC9AA755.e.6/value - {"text":"SuperSecretPassword!"}
64-
RESULT: {"text":"SuperSecretPassword!"}
65-
COMMAND: POST /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.ECDD0D49BE555B0547226577CC9AA755.e.7/click - {}
66-
RESULT: {}
67-
COMMAND: GET /session/69b60adbc65a7e265fc3972621eec652/element/f.7DC630A8BB58E2E58F9E88FED88EA3B2.d.752C3C14B55001F6F7728C476DC27EEE.e.15/text - {}
68-
RESULT: {}
69-
COMMAND: DELETE /session/69b60adbc65a7e265fc3972621eec652 - {}
70-
RESULT: {}
71-
</system-out>
72-
</testcase>
73-
</testsuite>
7474
</testsuites>

packages/wdio/currents.results.xml

-2
This file was deleted.

packages/wdio/package.json

+4-8
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,13 @@
66
"scripts": {},
77
"author": "",
88
"license": "MIT",
9-
"dependencies": {
9+
"devDependencies": {
10+
"@wdio/cli": "^9.10.1",
1011
"@wdio/junit-reporter": "^9.2.14",
1112
"@wdio/local-runner": "^9.2.15",
1213
"@wdio/mocha-framework": "^9.2.8",
1314
"@wdio/spec-reporter": "^9.2.14",
14-
"chromedriver": "^131.0.0"
15-
},
16-
"overrides": {
17-
"chalk": "4.1.2",
18-
"@wdio/cli": {
19-
"chalk": "4.1.2"
20-
}
15+
"chromedriver": "^131.0.0",
16+
"@currents/cmd": "^1.6.8"
2117
}
2218
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<testsuites tests="1" failures="1" errors="0" skipped="0">
3+
<testsuite name="My Login application incorrect" timestamp="2025-03-05T22:31:51" time="7.377" tests="1" failures="1" errors="0" skipped="0">
4+
<properties>
5+
<property name="specId" value="0"/>
6+
<property name="suiteName" value="My Login application incorrect"/>
7+
<property name="capabilities" value="chrome.133_0_6943_142.mac"/>
8+
<property name="file" value="file://./tests/signup.e2e.js"/>
9+
</properties>
10+
<testcase classname="chrome.133_0_6943_142.mac.My_Login_application_incorrect" name="should not login with invalid credentials" time="7.374" file="file://./tests/signup.e2e.js">
11+
<failure message="Expect to have text&#xA;&#xA;Expected: StringContaining &quot;You logged into a secure area!&quot;&#xA;Received: &quot;Your password is invalid!&#xA;×&quot;"/>
12+
<system-out><![CDATA[
13+
COMMAND: POST /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.8AAF730B359299614FF4FB731EEB7752.e.2/clear - {}
14+
RESULT: {}
15+
COMMAND: POST /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.8AAF730B359299614FF4FB731EEB7752.e.2/value - {"text":"tomsmith"}
16+
RESULT: {"text":"tomsmith"}
17+
COMMAND: POST /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.8AAF730B359299614FF4FB731EEB7752.e.4/clear - {}
18+
RESULT: {}
19+
COMMAND: POST /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.8AAF730B359299614FF4FB731EEB7752.e.4/value - {"text":"123"}
20+
RESULT: {"text":"123"}
21+
COMMAND: POST /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.8AAF730B359299614FF4FB731EEB7752.e.5/click - {}
22+
RESULT: {}
23+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
24+
RESULT: {}
25+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
26+
RESULT: {}
27+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
28+
RESULT: {}
29+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
30+
RESULT: {}
31+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
32+
RESULT: {}
33+
COMMAND: GET /session/01cfdf2e3a2ca3cc458f82379326705f/element/f.F729908618F805AF42FBC441B50FAD50.d.E9176113C5793FC599655876EA69383E.e.13/text - {}
34+
RESULT: {}
35+
COMMAND: DELETE /session/01cfdf2e3a2ca3cc458f82379326705f - {}
36+
RESULT: {}
37+
]]></system-out>
38+
<system-err><![CDATA[
39+
Error: Expect to have text
40+
41+
Expected: StringContaining "You logged into a secure area!"
42+
Received: "Your password is invalid!
43+
×"
44+
at Context.<anonymous> (/Users/miguelangarano/Documents/GitHub/currents-junit-xml-example/packages/wdio/tests/signup.e2e.js:11:41)
45+
]]></system-err>
46+
</testcase>
47+
</testsuite>
48+
</testsuites>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<testsuites tests="1" failures="0" errors="0" skipped="0">
3+
<testsuite name="My Login application" timestamp="2025-03-05T22:31:51" time="4.297" tests="1" failures="0" errors="0" skipped="0">
4+
<properties>
5+
<property name="specId" value="0"/>
6+
<property name="suiteName" value="My Login application"/>
7+
<property name="capabilities" value="chrome.133_0_6943_142.mac"/>
8+
<property name="file" value="file://./tests/test.e2e.js"/>
9+
</properties>
10+
<testcase classname="chrome.133_0_6943_142.mac.My_Login_application" name="should login with valid credentials" time="4.295" file="file://./tests/test.e2e.js">
11+
<system-out><![CDATA[
12+
COMMAND: POST /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.3E8AF93867BC44EE71C42EC4C9B8910E.e.2/clear - {}
13+
RESULT: {}
14+
COMMAND: POST /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.3E8AF93867BC44EE71C42EC4C9B8910E.e.2/value - {"text":"tomsmith"}
15+
RESULT: {"text":"tomsmith"}
16+
COMMAND: POST /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.3E8AF93867BC44EE71C42EC4C9B8910E.e.4/clear - {}
17+
RESULT: {}
18+
COMMAND: POST /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.3E8AF93867BC44EE71C42EC4C9B8910E.e.4/value - {"text":"SuperSecretPassword!"}
19+
RESULT: {"text":"SuperSecretPassword!"}
20+
COMMAND: POST /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.3E8AF93867BC44EE71C42EC4C9B8910E.e.5/click - {}
21+
RESULT: {}
22+
COMMAND: GET /session/65ef692887671b0b395ded0934b17a1a/element/f.4BDC03A6EBF38C5ED2A40D4B04D48C5C.d.1720C3299E751C3A97CB4EFA706E82E7.e.9/text - {}
23+
RESULT: {}
24+
COMMAND: DELETE /session/65ef692887671b0b395ded0934b17a1a - {}
25+
RESULT: {}
26+
]]></system-out>
27+
</testcase>
28+
</testsuite>
29+
</testsuites>

packages/wdio/wdio.conf.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ exports.config = {
132132
[
133133
"junit",
134134
{
135-
outputDir: "./wdio-example",
135+
outputDir: "./results",
136136
outputFileFormat: function (options) {
137137
return `results-${Date.now()}-${options.cid}.xml`;
138138
},

scripts/combineResults.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ const path = require("path");
55
const args = process.argv.slice(2);
66
const reportsDirIndex = args.indexOf("--reports-dir");
77
const outputFileIndex = args.indexOf("--output-file");
8+
const groupNameIndex = args.indexOf("--group-name");
89

910
const reportsDir =
10-
reportsDirIndex !== -1 ? args[reportsDirIndex + 1] : "wdio-example";
11+
reportsDirIndex !== -1 ? args[reportsDirIndex + 1] : "results";
1112
const outputFile =
1213
outputFileIndex !== -1
1314
? args[outputFileIndex + 1]
14-
: "wdio-example/combined-results.xml";
15+
: "combined-results.xml";
16+
const groupName = groupNameIndex !== -1 ? args[groupNameIndex + 1] : "junit";
1517

1618
if (reportsDirIndex === -1 || outputFileIndex === -1) {
1719
console.log(
@@ -45,14 +47,22 @@ async function processTestSuites(testsuites) {
4547
}
4648

4749
async function combineResults() {
50+
const folderPath = reportsDir;
51+
52+
if (!fs.existsSync(folderPath)) {
53+
fs.mkdirSync(folderPath, { recursive: true });
54+
console.log("Folder created:", folderPath);
55+
} else {
56+
console.log("Folder already exists:", folderPath);
57+
}
4858
const files = fs
4959
.readdirSync(reportsDir)
5060
.filter((f) => f.startsWith("results-") && f.endsWith(".xml"));
5161

5262
let combinedTestsuites = {
5363
testsuites: {
5464
$: {
55-
name: "vitest tests",
65+
name: groupName,
5666
},
5767
testsuite: [],
5868
},
@@ -76,7 +86,7 @@ async function combineResults() {
7686
fs.writeFileSync(outputFile, xml);
7787

7888
// Optionally clean up individual result files
79-
files.forEach((file) => fs.unlinkSync(path.join(reportsDir, file)));
89+
// files.forEach((file) => fs.unlinkSync(path.join(reportsDir, file)));
8090

8191
console.log("Results combined into:", outputFile);
8292
}

0 commit comments

Comments
 (0)