diff --git a/v-next/hardhat-node-test-reporter/integration-tests/README.md b/v-next/hardhat-node-test-reporter/integration-tests/README.md
index e1776872cec..a94fae6c390 100644
--- a/v-next/hardhat-node-test-reporter/integration-tests/README.md
+++ b/v-next/hardhat-node-test-reporter/integration-tests/README.md
@@ -2,7 +2,7 @@
This folder contains integration tests for the reporter. They don't use `node:test` as driver of the test runs, as you can't run `node:test` within `node:test`.
-Instead, the script `index.ts` runs all the tests in each fixture folder, comparing the reporter's results with `result.txt`.
+Instead, the script `index.ts` runs all the tests in each fixture folder, comparing the reporter's results with `result.$NODE_MAJOR_VERSION.txt` (or `result.txt` as a fallback if a node-specific result file does not exist).
## Running all tests
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.svg b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.svg
deleted file mode 100644
index 9094357c4d4..00000000000
--- a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.svg
+++ /dev/null
@@ -1,1794 +0,0 @@
-
-
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.svg b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.svg
new file mode 100644
index 00000000000..5623c4992c9
--- /dev/null
+++ b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.svg
@@ -0,0 +1,979 @@
+
+
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.txt b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.txt
similarity index 86%
rename from v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.txt
rename to v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.txt
index e7ce38b151d..e138cf97bd9 100644
--- a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.txt
+++ b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v22.txt
@@ -20,7 +20,7 @@
[31m7) level 0[39m
-[32m3 passing[39m[90m (132ms)[39m[31m[39m
+[32m3 passing[39m[90m (140ms)[39m[31m[39m
[31m7 failing[39m[90m[39m
[90m1 cancelled[39m
@@ -64,9 +64,9 @@
[31m+ 1[39m
[90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:29:22)[39m
- [90m at Test.runInAsyncScope (node:async_hooks:211:14)[39m
- [90m at Test.run (node:internal/test_runner/test:979:25)[39m
- [90m at Test.start (node:internal/test_runner/test:877:17)[39m
+ [90m at Test.runInAsyncScope (node:async_hooks:214:14)[39m
+ [90m at Test.run (node:internal/test_runner/test:1047:25)[39m
+ [90m at Test.start (node:internal/test_runner/test:944:17)[39m
[90m at startSubtestAfterBootstrap (node:internal/test_runner/harness:296:17)[39m
[90m at run (node:internal/test_runner/harness:307:12)[39m
[90m at test (node:internal/test_runner/harness:316:12)[39m
@@ -82,18 +82,18 @@
[31mError: error with cause[39m
[90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:33:21)[39m
- [90m at Test.runInAsyncScope (node:async_hooks:211:14)[39m
- [90m at Test.run (node:internal/test_runner/test:979:25)[39m
- [90m at Test.start (node:internal/test_runner/test:877:17)[39m
+ [90m at Test.runInAsyncScope (node:async_hooks:214:14)[39m
+ [90m at Test.run (node:internal/test_runner/test:1047:25)[39m
+ [90m at Test.start (node:internal/test_runner/test:944:17)[39m
[90m at startSubtestAfterBootstrap (node:internal/test_runner/harness:296:17)[39m
[90m at run (node:internal/test_runner/harness:307:12)[39m
[90m at test (node:internal/test_runner/harness:316:12)[39m
[90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:32:19)[39m
[90m[cause]: Error: cause[39m
[90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:34:24)[39m
- [90m at Test.runInAsyncScope (node:async_hooks:211:14)[39m
- [90m at Test.run (node:internal/test_runner/test:979:25)[39m
- [90m at Test.start (node:internal/test_runner/test:877:17)[39m
+ [90m at Test.runInAsyncScope (node:async_hooks:214:14)[39m
+ [90m at Test.run (node:internal/test_runner/test:1047:25)[39m
+ [90m at Test.start (node:internal/test_runner/test:944:17)[39m
[90m at startSubtestAfterBootstrap (node:internal/test_runner/harness:296:17)[39m
[90m at run (node:internal/test_runner/harness:307:12)[39m
[90m at test (node:internal/test_runner/harness:316:12)[39m
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.svg b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.svg
new file mode 100644
index 00000000000..642ac50c7fb
--- /dev/null
+++ b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.svg
@@ -0,0 +1,643 @@
+
+
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.txt b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.txt
new file mode 100644
index 00000000000..5a9e66fbe5f
--- /dev/null
+++ b/v-next/hardhat-node-test-reporter/integration-tests/fixture-tests/nested-test/result.v24.txt
@@ -0,0 +1,103 @@
+ level 0
+ level 1
+ level 2
+ [90m[32m✔[39m[90m nested test[39m
+ [31m1) assertion error in nested test[39m
+ [31m2) error with cause in nested test[39m
+ level 0
+ level 1
+ level 2
+ [90m[32m✔[39m[90m nested test[39m
+ [31m3) assertion error in nested test[39m
+ [31m4) error with cause in nested test[39m
+ [90m[32m✔[39m[90m unawaited test 1[39m
+ [90m[32m✔[39m[90m unawaited test 2[39m
+
+ [31m5) level 2[39m
+
+ [31m6) level 1[39m
+
+ [31m7) level 0[39m
+
+
+[32m4 passing[39m[90m (139ms)[39m[31m[39m
+[31m7 failing[39m
+
+ 1) level 0
+ level 1
+ level 2
+ assertion error in nested test:
+
+ [31mAssertionError: Expected values to be strictly equal[39m
+ [32m- Expected[39m
+ [31m+ Received[39m
+
+ [32m- 2[39m
+ [31m+ 1[39m
+
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:12:16)[39m
+
+ 2) level 0
+ level 1
+ level 2
+ error with cause in nested test:
+
+ [31mError: error with cause[39m
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:16:15)[39m
+ [90m[cause]: Error: cause[39m
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:17:18)[39m
+
+ 3) level 0
+ level 1
+ level 2
+ level 0
+ level 1
+ level 2
+ assertion error in nested test:
+
+ [31mAssertionError: Expected values to be strictly equal[39m
+ [32m- Expected[39m
+ [31m+ Received[39m
+
+ [32m- 2[39m
+ [31m+ 1[39m
+
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:29:22)[39m
+
+ 4) level 0
+ level 1
+ level 2
+ level 0
+ level 1
+ level 2
+ error with cause in nested test:
+
+ [31mError: error with cause[39m
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:33:21)[39m
+ [90m[cause]: Error: cause[39m
+ [90m at TestContext. (integration-tests/fixture-tests/nested-test/test.ts:34:24)[39m
+
+ 5) level 0
+ level 1
+ level 2
+ level 0
+ level 1
+ level 2:
+
+ [31mError: 2 subtests failed[39m
+
+ 6) level 0
+ level 1
+ level 2
+ level 0
+ level 1:
+
+ [31mError: 1 subtest failed[39m
+
+ 7) level 0
+ level 1
+ level 2
+ level 0:
+
+ [31mError: 1 subtest failed[39m
+
diff --git a/v-next/hardhat-node-test-reporter/integration-tests/index.ts b/v-next/hardhat-node-test-reporter/integration-tests/index.ts
index f89e819e0ec..31f8d3a41be 100644
--- a/v-next/hardhat-node-test-reporter/integration-tests/index.ts
+++ b/v-next/hardhat-node-test-reporter/integration-tests/index.ts
@@ -95,9 +95,16 @@ for (const entry of entries) {
const start = lines.findIndex((l) => l.startsWith("Node.js"));
const output = lines.slice(start + 1).join("\n");
- // We're saving the actual outptu in case one needs to access it. It is .gitignored.
+ // We're saving the actual outptut in case one needs to access it. It is .gitignored.
writeFileSync(entryPath + "/result.actual.txt", output);
- const expectedOutput = readFileSync(entryPath + "/result.txt", "utf8");
+ // First, we try to access node version specific result file. If it doesn't
+ // exist, we fallback to the generic result file.
+ const nodeMajorVersion = process.version.split(".")[0];
+ let resultTxt = path.join(entryPath, `result.${nodeMajorVersion}.txt`);
+ if (!existsSync(resultTxt)) {
+ resultTxt = path.join(entryPath, "result.txt");
+ }
+ const expectedOutput = readFileSync(resultTxt, "utf8");
const normalizedOutput = normalizeOutput(entry, output);
const normalizedExpectedOutput = normalizeOutput(entry, expectedOutput);
diff --git a/v-next/hardhat-node-test-reporter/scripts/regenerate-fixtures.sh b/v-next/hardhat-node-test-reporter/scripts/regenerate-fixtures.sh
index e81ef3efbbd..ca6348184be 100755
--- a/v-next/hardhat-node-test-reporter/scripts/regenerate-fixtures.sh
+++ b/v-next/hardhat-node-test-reporter/scripts/regenerate-fixtures.sh
@@ -31,15 +31,28 @@ for dir in $dirs; do
fi
fi
- node --import tsx/esm --test --test-reporter=./dist/src/reporter.js $options $dir/*.ts --color > $dir/result.txt || true # Ignore failures, as they are expected
+ # TODO: If we ever encounter more tests that are sensitive to the node version,
+ # we should either add a more robust way of detecting such tests or version
+ # all the test result files.
+ result_file_name="result"
+ if [ "$dir" == "integration-tests/fixture-tests/nested-test" ]; then
+ node_major_version="$(node --version | cut -d. -f1)"
+ result_file_name="result.$node_major_version"
+ fi
+
+ result_txt="$dir/$result_file_name.txt"
+ result_html="$dir/$result_file_name.html"
+ result_svg="$dir/$result_file_name.svg"
+
+ node --import tsx/esm --test --test-reporter=./dist/src/reporter.js $options $dir/*.ts --color > "$result_txt" || true # Ignore failures, as they are expected
- if grep -q '^Node\.js' $dir/result.txt; then
- sed -i '1,/^Node\.js/d' $dir/result.txt;
+ if grep -q '^Node\.js' "$result_txt"; then
+ sed -i '1,/^Node\.js/d' "$result_txt";
fi
- cat $dir/result.txt | aha --black > $dir/result.html;
+ cat "$result_txt" | aha --black > "$result_html";
- wkhtmltoimage --quiet --format svg $dir/result.html $dir/result.svg;
+ wkhtmltoimage --quiet --format svg "$result_html" "$result_svg";
- rm $dir/result.html
+ rm "$result_html";
done