@web/test-runner-playwright
Advanced tools
Comparing version 0.5.6 to 0.5.7
# @web/test-runner-playwright | ||
## 0.5.7 | ||
### Patch Changes | ||
- cde5d29: add browser logging for all browser launchers | ||
- Updated dependencies [cde5d29] | ||
- Updated dependencies [cde5d29] | ||
- @web/test-runner-core@0.7.15 | ||
## 0.5.6 | ||
@@ -4,0 +13,0 @@ |
@@ -9,3 +9,2 @@ import { Page } from 'playwright'; | ||
private nativeInstrumentationEnabledOnPage; | ||
private logs; | ||
private testURL?; | ||
@@ -17,5 +16,3 @@ private navigations; | ||
private collectTestCoverage; | ||
private onConsoleMessage; | ||
private collectMessageType; | ||
} | ||
//# sourceMappingURL=PlaywrightLauncherPage.d.ts.map |
@@ -6,16 +6,2 @@ "use strict"; | ||
const test_runner_coverage_v8_1 = require("@web/test-runner-coverage-v8"); | ||
const browser_logs_1 = require("@web/browser-logs"); | ||
// these warnings are generated by mocha | ||
const filteredBrowserWarnings = [ | ||
"'window.webkitStorageInfo' is deprecated.", | ||
'onmozfullscreenchange is deprecated.', | ||
'onmozfullscreenerror is deprecated.', | ||
]; | ||
function filterBrowserLogs(browserLogs) { | ||
return browserLogs.filter(log => { | ||
return !(log.length === 1 && | ||
typeof log[0] === 'string' && | ||
filteredBrowserWarnings.some(warn => log[0].includes(warn))); | ||
}); | ||
} | ||
class PlaywrightLauncherPage { | ||
@@ -27,30 +13,3 @@ constructor(config, testFiles, playwrightPage) { | ||
this.nativeInstrumentationEnabledOnPage = false; | ||
this.logs = []; | ||
this.navigations = []; | ||
this.onConsoleMessage = (message) => { | ||
if (!this.collectMessageType(message.type())) { | ||
return; | ||
} | ||
const args = message.args(); | ||
if (args.length > 0) { | ||
const logsPromise = message.args().map(arg => arg | ||
// serialize the log message in the browser to a string | ||
// __wtr_browser_logs__ is injected by a script, but in some cases we're setting it isn't available | ||
// for example for browser native warnings | ||
.evaluateHandle(e => window.__wtr_browser_logs__ | ||
? window.__wtr_browser_logs__.serialize(e) | ||
: JSON.stringify(e)) | ||
// pass along the message from the browser to NodeJS as a string | ||
.then(handle => handle.jsonValue()) | ||
// deserialize the string to an array of logs | ||
.then(str => browser_logs_1.deserialize(str)) | ||
.catch(err => `Error while collecting browser logs: ${err.message}`)); | ||
this.logs.push(Promise.all(logsPromise)); | ||
} | ||
else { | ||
this.logs.push(Promise.resolve([message.text()])); | ||
} | ||
}; | ||
// inject serialization script | ||
playwrightPage.addInitScript(browser_logs_1.browserScript); | ||
// track browser navigations | ||
@@ -62,5 +21,2 @@ playwrightPage.on('request', e => { | ||
}); | ||
if (config.logBrowserLogs !== false) { | ||
playwrightPage.on('console', this.onConsoleMessage); | ||
} | ||
} | ||
@@ -80,3 +36,2 @@ async runSession(url, coverage) { | ||
} | ||
this.logs = []; | ||
await this.playwrightPage.setViewportSize({ height: 600, width: 800 }); | ||
@@ -88,3 +43,2 @@ await this.playwrightPage.goto(url); | ||
let testCoverage; | ||
let browserLogs = []; | ||
// check if the page was navigated, resulting in broken tests | ||
@@ -99,7 +53,3 @@ const navigationError = test_runner_core_1.getBrowserPageNavigationError(this.testURL, this.navigations); | ||
: undefined; | ||
[testCoverage, browserLogs] = await Promise.all([ | ||
testCoveragePromise, | ||
Promise.all(this.logs), | ||
]); | ||
browserLogs = filterBrowserLogs(browserLogs); | ||
testCoverage = await testCoveragePromise; | ||
} | ||
@@ -109,3 +59,3 @@ // navigate to an empty page to kill any running code on the page, stopping timers and | ||
await this.playwrightPage.goto('data:,'); | ||
return { testCoverage, browserLogs, errors }; | ||
return { testCoverage, errors }; | ||
} | ||
@@ -129,9 +79,4 @@ async collectTestCoverage(config, testFiles) { | ||
} | ||
collectMessageType(type) { | ||
return (this.config.logBrowserLogs === true || | ||
(Array.isArray(this.config.logBrowserLogs) && | ||
this.config.logBrowserLogs.includes(type))); | ||
} | ||
} | ||
exports.PlaywrightLauncherPage = PlaywrightLauncherPage; | ||
//# sourceMappingURL=PlaywrightLauncherPage.js.map |
{ | ||
"name": "@web/test-runner-playwright", | ||
"version": "0.5.6", | ||
"version": "0.5.7", | ||
"publishConfig": { | ||
@@ -42,4 +42,3 @@ "access": "public" | ||
"dependencies": { | ||
"@web/browser-logs": "^0.1.2", | ||
"@web/test-runner-core": "^0.7.10", | ||
"@web/test-runner-core": "^0.7.15", | ||
"@web/test-runner-coverage-v8": "^0.1.2", | ||
@@ -46,0 +45,0 @@ "playwright": "^1.3.0" |
@@ -1,2 +0,2 @@ | ||
import { Page, ConsoleMessage } from 'playwright'; | ||
import { Page } from 'playwright'; | ||
import { | ||
@@ -9,25 +9,6 @@ getBrowserPageNavigationError, | ||
import { V8Coverage, v8ToIstanbul } from '@web/test-runner-coverage-v8'; | ||
import { browserScript, deserialize } from '@web/browser-logs'; | ||
import { SessionResult } from '@web/test-runner-core'; | ||
// these warnings are generated by mocha | ||
const filteredBrowserWarnings = [ | ||
"'window.webkitStorageInfo' is deprecated.", | ||
'onmozfullscreenchange is deprecated.', | ||
'onmozfullscreenerror is deprecated.', | ||
]; | ||
function filterBrowserLogs(browserLogs: any[][]) { | ||
return browserLogs.filter(log => { | ||
return !( | ||
log.length === 1 && | ||
typeof log[0] === 'string' && | ||
filteredBrowserWarnings.some(warn => log[0].includes(warn)) | ||
); | ||
}); | ||
} | ||
export class PlaywrightLauncherPage { | ||
private nativeInstrumentationEnabledOnPage = false; | ||
private logs: Promise<any[]>[] = []; | ||
private testURL?: URL; | ||
@@ -41,5 +22,2 @@ private navigations: URL[] = []; | ||
) { | ||
// inject serialization script | ||
playwrightPage.addInitScript(browserScript); | ||
// track browser navigations | ||
@@ -51,6 +29,2 @@ playwrightPage.on('request', e => { | ||
}); | ||
if (config.logBrowserLogs !== false) { | ||
playwrightPage.on('console', this.onConsoleMessage); | ||
} | ||
} | ||
@@ -74,3 +48,2 @@ | ||
this.logs = []; | ||
await this.playwrightPage.setViewportSize({ height: 600, width: 800 }); | ||
@@ -83,3 +56,2 @@ await this.playwrightPage.goto(url); | ||
let testCoverage: CoverageMapData | undefined; | ||
let browserLogs: any[][] = []; | ||
@@ -95,7 +67,3 @@ // check if the page was navigated, resulting in broken tests | ||
[testCoverage, browserLogs] = await Promise.all([ | ||
testCoveragePromise, | ||
Promise.all(this.logs), | ||
]); | ||
browserLogs = filterBrowserLogs(browserLogs); | ||
testCoverage = await testCoveragePromise; | ||
} | ||
@@ -107,3 +75,3 @@ | ||
return { testCoverage, browserLogs, errors }; | ||
return { testCoverage, errors }; | ||
} | ||
@@ -134,40 +102,2 @@ | ||
} | ||
private onConsoleMessage = (message: ConsoleMessage) => { | ||
if (!this.collectMessageType(message.type())) { | ||
return; | ||
} | ||
const args = message.args(); | ||
if (args.length > 0) { | ||
const logsPromise = message.args().map(arg => | ||
arg | ||
// serialize the log message in the browser to a string | ||
// __wtr_browser_logs__ is injected by a script, but in some cases we're setting it isn't available | ||
// for example for browser native warnings | ||
.evaluateHandle(e => | ||
(window as any).__wtr_browser_logs__ | ||
? (window as any).__wtr_browser_logs__.serialize(e) | ||
: JSON.stringify(e), | ||
) | ||
// pass along the message from the browser to NodeJS as a string | ||
.then(handle => handle.jsonValue()) | ||
// deserialize the string to an array of logs | ||
.then(str => deserialize(str as string)) | ||
.catch(err => `Error while collecting browser logs: ${err.message}`), | ||
); | ||
this.logs.push(Promise.all(logsPromise)); | ||
} else { | ||
this.logs.push(Promise.resolve([message.text()])); | ||
} | ||
}; | ||
private collectMessageType(type: string) { | ||
return ( | ||
this.config.logBrowserLogs === true || | ||
(Array.isArray(this.config.logBrowserLogs) && | ||
this.config.logBrowserLogs.includes(type as any)) | ||
); | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
3
38159
478
- Removed@web/browser-logs@^0.1.2