Skip to content

Commit a229893

Browse files
committed
report genration fixes and actual-screenshot fixes
1 parent 4a674e3 commit a229893

File tree

7 files changed

+31
-1
lines changed

7 files changed

+31
-1
lines changed

.github/workflows/ci-test.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,28 @@ jobs:
2424
env:
2525
CI: true
2626
- name: build and test
27+
id: test
2728
run: npm test
29+
continue-on-error: true
2830
env:
2931
CI: true
3032
- name: Generate Visual Test Report
33+
if: always()
3134
run: node visual-report.js
3235
env:
3336
CI: true
3437
- name: Upload Visual Test Report
38+
if: always()
3539
uses: actions/upload-artifact@v4
3640
with:
3741
name: visual-test-report
3842
path: test/unit/visual/visual-report.html
3943
retention-days: 14
4044
- name: report test coverage
45+
if: steps.test.outcome == 'success'
4146
run: bash <(curl -s https://codecov.io/bash) -f coverage/coverage-final.json
4247
env:
4348
CI: true
49+
- name: fail job if tests failed
50+
if: steps.test.outcome != 'success'
51+
run: exit 1

test/unit/visual/cases/typography.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,18 @@ visualSuite("Typography", function () {
385385
});
386386
}
387387
);
388+
visualTest("intentionally failing test", function (p5, screenshot) {
389+
p5.createCanvas(100, 100);
390+
p5.background(255);
391+
// initially put a red circle for storing in screenshots
392+
p5.fill(255, 0, 0); // Red fill
393+
p5.noStroke();
394+
395+
// Then change circle to rect to make it fail
396+
p5.rect(30, 30, 40, 40);
397+
398+
screenshot();
399+
});
388400
});
389401
}
390402
});
965 Bytes
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"numScreenshots": 1
3+
}
965 Bytes
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"numScreenshots": 1
3+
}

test/unit/visual/visualTest.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,11 @@ export function visualTest(
445445
const actualFilename = `../actual-screenshots/${flatName}-${i.toString().padStart(3, '0')}.png`;
446446
if (expected[i]) {
447447
const result = await checkMatch(actual[i], expected[i], myp5);
448+
// Always save the actual image before potentially throwing an error
449+
writeImageFile(actualFilename, toBase64(actual[i]));
448450
if (!result.ok) {
451+
const diffFilename = `../actual-screenshots/${flatName}-${i.toString().padStart(3, '0')}-diff.png`;
452+
writeImageFile(diffFilename, toBase64(result.diff));
449453
throw new Error(
450454
`Screenshots do not match! Expected:\n${toBase64(expected[i])}\n\nReceived:\n${toBase64(actual[i])}\n\nDiff:\n${toBase64(result.diff)}\n\n` +
451455
'If this is unexpected, paste these URLs into your browser to inspect them.\n\n' +
@@ -454,8 +458,8 @@ export function visualTest(
454458
}
455459
} else {
456460
writeImageFile(expectedFilenames[i], toBase64(actual[i]));
461+
writeImageFile(actualFilename, toBase64(actual[i]));
457462
}
458-
writeImageFile(actualFilename, toBase64(actual[i]));
459463
}
460464
});
461465
});

0 commit comments

Comments
 (0)