diff --git a/.gitignore b/.gitignore index ca8c34e..0cd892f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules/ npm-debug.log +playwright-report/ ### vim ### .*.s[a-w][a-z] diff --git a/package.json b/package.json index 259988c..faba6cc 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/script/build-module.js b/script/build-module.js index e002e55..5b47349 100644 --- a/script/build-module.js +++ b/script/build-module.js @@ -1,3 +1,4 @@ +#!/usr/bin/env node const fs = require('fs'); /*/////////////// diff --git a/test/test-es6.mjs b/test/mocha-test-es6.mjs similarity index 100% rename from test/test-es6.mjs rename to test/mocha-test-es6.mjs diff --git a/test/test-extension.js b/test/mocha-test-extension.js similarity index 100% rename from test/test-extension.js rename to test/mocha-test-extension.js diff --git a/test/test.js b/test/mocha-test.js similarity index 99% rename from test/test.js rename to test/mocha-test.js index c998088..e85322d 100644 --- a/test/test.js +++ b/test/mocha-test.js @@ -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'); diff --git a/test/playwright-test-browser.spec.mjs b/test/playwright-test-browser.spec.mjs new file mode 100644 index 0000000..a8efd22 --- /dev/null +++ b/test/playwright-test-browser.spec.mjs @@ -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'); +}); \ No newline at end of file