Install @playwright/test to perform test in real browser

This commit is contained in:
Faisal Salman 2023-04-08 09:26:07 +07:00
parent 625ece73e2
commit 05747dba37
7 changed files with 50 additions and 3 deletions

1
.gitignore vendored
View File

@ -1,5 +1,6 @@
node_modules/
npm-debug.log
playwright-report/
### vim ###
.*.s[a-w][a-z]

View File

@ -164,12 +164,13 @@
],
"scripts": {
"build": "uglifyjs src/ua-parser.js -o dist/ua-parser.min.js --comments '/^ UA/' && uglifyjs src/ua-parser.js -o dist/ua-parser.pack.js --comments '/^ UA/' --compress --mangle && node script/build-module.js",
"test": "jshint src/ && mocha -R nyan test",
"test-ci": "jshint src/ && mocha -R spec test"
"test": "jshint src && mocha -R nyan test/mocha*js && npx playwright test",
"test-ci": "jshint src && mocha -R spec test/mocha*js && npx playwright test"
},
"devDependencies": {
"@babel/parser": "7.15.8",
"@babel/traverse": "7.15.4",
"@playwright/test": "^1.32.2",
"jshint": "~2.12.0",
"mocha": "~8.2.0",
"requirejs": "^2.3.2",

View File

@ -1,3 +1,4 @@
#!/usr/bin/env node
const fs = require('fs');
/*///////////////

View File

@ -4,7 +4,7 @@ var assert = require('assert');
var requirejs = require('requirejs');
var parseJS = require('@babel/parser').parse;
var traverse = require('@babel/traverse').default;
var UAParser = require('./../src/ua-parser');
var UAParser = require('../src/ua-parser');
var browsers = require('./specs/browser-all.json');
var cpus = require('./specs/cpu-all.json');
var devices = require('./specs/device-all.json');

View File

@ -0,0 +1,44 @@
// @ts-check
import { test, expect } from '@playwright/test';
import path from 'path';
import url from 'url';
test('read client hints data', async ({ page }) => {
await page.addInitScript(() => {
Object.defineProperty(navigator, 'userAgentData', {
value : {
brands : [],
platform : '',
mobile : false,
getHighEntropyValues : () => {
return Promise.resolve({
brands : [
{
brand : 'Chromium',
version : '110'
},
{
brand : 'Not(A:Brand',
version : '110'
},
{
brand : 'New Browser',
version : '110'
}
],
platform : 'New OS'
});
}
}
});
});
const dirname = path.resolve(path.dirname(url.fileURLToPath(import.meta.url)), '../');
await page.goto(`file://${dirname}/dist/ua-parser.html`);
// @ts-ignore
const uap = await page.evaluate(async () => await UAParser().withClientHints());
expect(uap).toHaveProperty('browser.name', 'New Browser');
expect(uap).toHaveProperty('os.name', 'New OS');
});