2
2
* Tests for fingerprint defenses. Ensure that fingerprinting is actually being blocked.
3
3
*/
4
4
import { test as base , expect } from '@playwright/test' ;
5
- import { testContextForExtension } from './helpers/harness.js' ;
5
+ import { testContextForExtension , gotoAndWait } from './helpers/harness.js' ;
6
6
import { createRequire } from 'node:module' ;
7
7
8
8
// eslint-disable-next-line no-redeclare
@@ -23,13 +23,23 @@ const expectedFingerprintValues = {
23
23
24
24
const pagePath = '/index.html' ;
25
25
const tests = [ { url : `http://localhost:3220${ pagePath } ` } , { url : `http://127.0.0.1:8383${ pagePath } ` } ] ;
26
+ const enabledCanvasArgs = {
27
+ site : {
28
+ enabledFeatures : [ 'fingerprintingCanvas' ] ,
29
+ } ,
30
+ featureSettings : {
31
+ fingerprintingCanvas : {
32
+ additionalEnabledCheck : 'enabled' ,
33
+ } ,
34
+ } ,
35
+ } ;
26
36
27
37
test . describe . serial ( 'All Fingerprint Defense Tests (must run in serial)' , ( ) => {
28
38
test . describe . serial ( 'Fingerprint Defense Tests' , ( ) => {
29
39
for ( const _test of tests ) {
30
40
test ( `${ _test . url } should include anti-fingerprinting code` , async ( { page, altServerPort } ) => {
31
41
console . log ( 'running:' , altServerPort ) ;
32
- await page . goto ( _test . url ) ;
42
+ await gotoAndWait ( page , _test . url , enabledCanvasArgs ) ;
33
43
const values = await page . evaluate ( ( ) => {
34
44
return {
35
45
// @ts -expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
@@ -64,7 +74,7 @@ test.describe.serial('All Fingerprint Defense Tests (must run in serial)', () =>
64
74
* @param {tests[number] } test
65
75
*/
66
76
async function runTest ( page , test ) {
67
- await page . goto ( test . url ) ;
77
+ await gotoAndWait ( page , test . url , enabledCanvasArgs ) ;
68
78
const lib = require . resolve ( '@fingerprintjs/fingerprintjs/dist/fp.js' ) ;
69
79
await page . addScriptTag ( { path : lib } ) ;
70
80
@@ -117,7 +127,7 @@ test.describe.serial('All Fingerprint Defense Tests (must run in serial)', () =>
117
127
tests . forEach ( ( testCase ) => {
118
128
test ( `Fingerprints should not match across first parties ${ testCase . url } ` , async ( { page, altServerPort } ) => {
119
129
console . log ( 'running:' , altServerPort ) ;
120
- await page . goto ( testCase . url ) ;
130
+ await gotoAndWait ( page , testCase . url , enabledCanvasArgs ) ;
121
131
122
132
// give it another second just to be sure
123
133
await page . waitForTimeout ( 1000 ) ;
0 commit comments