Best JavaScript code snippet using playwright-internal
base.js
Source:base.js
...150function formatFailure(config, test, index, stdio) {151 const tokens = [];152 tokens.push(formatTestHeader(config, test, ' ', index));153 for (const result of test.results) {154 const resultTokens = formatResultFailure(test, result, ' ');155 if (!resultTokens.length) continue;156 const statusSuffix = result.status === 'passed' && test.expectedStatus === 'failed' ? ' -- passed unexpectedly' : '';157 if (result.retry) {158 tokens.push('');159 tokens.push(_safe.default.gray(pad(` Retry #${result.retry}${statusSuffix}`, '-')));160 }161 tokens.push(...resultTokens);162 const output = result[kOutputSymbol] || [];163 if (stdio && output.length) {164 const outputText = output.map(({165 chunk,166 type167 }) => {168 const text = chunk.toString('utf8');169 if (type === 'stderr') return _safe.default.red(stripAnsiEscapes(text));170 return text;171 }).join('');172 tokens.push('');173 tokens.push(_safe.default.gray(pad('--- Test output', '-')) + '\n\n' + outputText + '\n' + pad('', '-'));174 }175 }176 tokens.push('');177 return tokens.join('\n');178}179function formatResultFailure(test, result, initialIndent) {180 const resultTokens = [];181 if (result.status === 'timedOut') {182 resultTokens.push('');183 resultTokens.push(indent(_safe.default.red(`Timeout of ${test.timeout}ms exceeded.`), initialIndent));184 }185 if (result.error !== undefined) resultTokens.push(indent(formatError(result.error, test.location.file), initialIndent));186 return resultTokens;187}188function relativeTestPath(config, test) {189 return _path.default.relative(config.rootDir, test.location.file) || _path.default.basename(test.location.file);190}191function stepSuffix(step) {192 const stepTitles = step ? step.titlePath() : [];193 return stepTitles.map(t => ' ⺠' + t).join('');...
playwright-formatters.js
Source:playwright-formatters.js
...109}110function relativeTestPath(config, test) {111 return relative(config.rootDir, test.location.file) || _path.default.basename(test.location.file);112}113function formatResultFailure(test, result, initialIndent, highlightCode) {114 var _error;115 const resultTokens = [];116 if (result.status === "timedOut") {117 resultTokens.push("");118 resultTokens.push(indent(red(`Timeout of ${test.timeout}ms exceeded.`), initialIndent));119 }120 if (result.status === "passed" && test.expectedStatus === "failed") {121 resultTokens.push("");122 resultTokens.push(indent(red(`Expected to fail, but passed.`), initialIndent));123 }124 let error = undefined;125 if (result.error !== undefined) {126 error = formatError(result.error, highlightCode, test.location.file);127 resultTokens.push(indent(error.message, initialIndent));128 }129 return {130 tokens: resultTokens,131 position: (_error = error) === null || _error === void 0 ? void 0 : _error.position,132 };133}134function formatTestTitle(config, test, step) {135 // root, project, file, ...describes, test136 const [, projectName, , ...titles] = test.titlePath();137 const location = `${relativeTestPath(config, test)}:${test.location.line}:${test.location.column}`;138 const projectTitle = projectName ? `[${projectName}] ⺠` : "";139 return `${projectTitle}${location} ⺠${titles.join(" ⺠")}${stepSuffix(step)}`;140}141function formatFailure(config, test, options = {}) {142 const { index, includeStdio, includeAttachments = true, filePath } = options;143 const lines = [];144 const title = formatTestTitle(config, test);145 const annotations = [];146 const header = formatTestHeader(config, test, " ", index);147 lines.push(red(header));148 for (const result of test.results) {149 const resultLines = [];150 const { tokens: resultTokens, position } = formatResultFailure(test, result, " ", enabled);151 if (!resultTokens.length) continue;152 if (result.retry) {153 resultLines.push("");154 resultLines.push(gray(pad(` Retry #${result.retry}`, "-")));155 }156 resultLines.push(...resultTokens);157 if (includeAttachments) {158 for (let i = 0; i < result.attachments.length; ++i) {159 const attachment = result.attachments[i];160 resultLines.push("");161 resultLines.push(cyan(pad(` attachment #${i + 1}: ${attachment.name} (${attachment.contentType})`, "-")));162 if (attachment.path) {163 const relativePath = relative(process.cwd(), attachment.path);164 resultLines.push(cyan(` ${relativePath}`)); // Make this extensible...
html.js
Source:html.js
1"use strict";2Object.defineProperty(exports, "__esModule", {3 value: true4});5exports.default = void 0;6var _fs = _interopRequireDefault(require("fs"));7var _path = _interopRequireDefault(require("path"));8var _utils = require("../../utils/utils");9var _base = require("./base");10var _json = require("./json");11function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }12/**13 * Copyright (c) Microsoft Corporation.14 *15 * Licensed under the Apache License, Version 2.0 (the "License");16 * you may not use this file except in compliance with the License.17 * You may obtain a copy of the License at18 *19 * http://www.apache.org/licenses/LICENSE-2.020 *21 * Unless required by applicable law or agreed to in writing, software22 * distributed under the License is distributed on an "AS IS" BASIS,23 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.24 * See the License for the specific language governing permissions and25 * limitations under the License.26 */27class HtmlReporter {28 constructor() {29 this._reportFolder = void 0;30 this._resourcesFolder = void 0;31 this.config = void 0;32 this.suite = void 0;33 this._reportFolder = _path.default.resolve(process.cwd(), process.env[`PLAYWRIGHT_HTML_REPORT`] || 'playwright-report');34 this._resourcesFolder = _path.default.join(this._reportFolder, 'resources');35 _fs.default.mkdirSync(this._resourcesFolder, {36 recursive: true37 });38 const appFolder = _path.default.join(__dirname, '..', '..', 'web', 'htmlReport');39 for (const file of _fs.default.readdirSync(appFolder)) _fs.default.copyFileSync(_path.default.join(appFolder, file), _path.default.join(this._reportFolder, file));40 }41 onBegin(config, suite) {42 this.config = config;43 this.suite = suite;44 }45 async onEnd() {46 const stats = {47 expected: 0,48 unexpected: 0,49 skipped: 0,50 flaky: 051 };52 this.suite.allTests().forEach(t => {53 ++stats[t.outcome()];54 });55 const output = {56 config: { ...this.config,57 rootDir: (0, _json.toPosixPath)(this.config.rootDir),58 projects: this.config.projects.map(project => {59 return {60 outputDir: (0, _json.toPosixPath)(project.outputDir),61 repeatEach: project.repeatEach,62 retries: project.retries,63 metadata: project.metadata,64 name: project.name,65 testDir: (0, _json.toPosixPath)(project.testDir),66 testIgnore: (0, _json.serializePatterns)(project.testIgnore),67 testMatch: (0, _json.serializePatterns)(project.testMatch),68 timeout: project.timeout69 };70 })71 },72 stats,73 suites: await Promise.all(this.suite.suites.map(s => this._serializeSuite(s)))74 };75 _fs.default.writeFileSync(_path.default.join(this._reportFolder, 'report.json'), JSON.stringify(output));76 }77 _relativeLocation(location) {78 if (!location) return {79 file: '',80 line: 0,81 column: 082 };83 return {84 file: (0, _json.toPosixPath)(_path.default.relative(this.config.rootDir, location.file)),85 line: location.line,86 column: location.column87 };88 }89 async _serializeSuite(suite) {90 return {91 title: suite.title,92 location: this._relativeLocation(suite.location),93 suites: await Promise.all(suite.suites.map(s => this._serializeSuite(s))),94 tests: await Promise.all(suite.tests.map(t => this._serializeTest(t)))95 };96 }97 async _serializeTest(test) {98 const testId = (0, _utils.calculateSha1)(test.titlePath().join('|'));99 return {100 testId,101 title: test.title,102 location: this._relativeLocation(test.location),103 expectedStatus: test.expectedStatus,104 timeout: test.timeout,105 annotations: test.annotations,106 retries: test.retries,107 ok: test.ok(),108 outcome: test.outcome(),109 results: await Promise.all(test.results.map(r => this._serializeResult(testId, test, r)))110 };111 }112 async _serializeResult(testId, test, result) {113 return {114 retry: result.retry,115 workerIndex: result.workerIndex,116 startTime: result.startTime.toISOString(),117 duration: result.duration,118 status: result.status,119 error: result.error,120 failureSnippet: (0, _base.formatResultFailure)(test, result, '').join('') || undefined,121 attachments: await this._createAttachments(testId, result),122 stdout: result.stdout,123 stderr: result.stderr,124 steps: serializeSteps(result.steps)125 };126 }127 async _createAttachments(testId, result) {128 const attachments = [];129 for (const attachment of result.attachments) {130 if (attachment.path) {131 const sha1 = (0, _utils.calculateSha1)(attachment.path) + _path.default.extname(attachment.path);132 _fs.default.copyFileSync(attachment.path, _path.default.join(this._resourcesFolder, sha1));133 attachments.push({ ...attachment,134 body: undefined,135 sha1136 });137 } else if (attachment.body && isTextAttachment(attachment.contentType)) {138 attachments.push({ ...attachment,139 body: attachment.body.toString()140 });141 } else {142 const sha1 = (0, _utils.calculateSha1)(attachment.body) + '.dat';143 _fs.default.writeFileSync(_path.default.join(this._resourcesFolder, sha1), attachment.body);144 attachments.push({ ...attachment,145 body: undefined,146 sha1147 });148 }149 }150 if (result.stdout.length) attachments.push(this._stdioAttachment(testId, result, 'stdout'));151 if (result.stderr.length) attachments.push(this._stdioAttachment(testId, result, 'stderr'));152 return attachments;153 }154 _stdioAttachment(testId, result, type) {155 const sha1 = `${testId}.${result.retry}.${type}`;156 const fileName = _path.default.join(this._resourcesFolder, sha1);157 for (const chunk of type === 'stdout' ? result.stdout : result.stderr) {158 if (typeof chunk === 'string') _fs.default.appendFileSync(fileName, chunk + '\n');else _fs.default.appendFileSync(fileName, chunk);159 }160 return {161 name: type,162 contentType: 'application/octet-stream',163 sha1164 };165 }166}167function serializeSteps(steps) {168 return steps.map(step => {169 return {170 title: step.title,171 category: step.category,172 startTime: step.startTime.toISOString(),173 duration: step.duration,174 error: step.error,175 steps: serializeSteps(step.steps)176 };177 });178}179function isTextAttachment(contentType) {180 if (contentType.startsWith('text/')) return true;181 if (contentType.includes('json')) return true;182 return false;183}184var _default = HtmlReporter;...
Using AI Code Generation
1const { formatResultFailure } = require('playwright/lib/utils/stackTrace');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 const element = await page.$('foobar');5 await element.click();6});7[Apache 2.0](LICENSE)
Using AI Code Generation
1const { formatResultFailure } = require('playwright/lib/test/workerRunner');2const { test } = require('@playwright/test');3test('failing test', async ({ page }) => {4 const title = await page.title();5 expect(title).toBe('Playwright');6});7const { formatResultFailure } = require('playwright/lib/test/workerRunner');8const { test } = require('@playwright/test');9test('failing test', async ({ page }) => {10 const title = await page.title();11 expect(title).toBe('Playwright');12});
Using AI Code Generation
1const { formatResultFailure } = require('@playwright/test/lib/reporters/base');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 const title = await page.innerText('.navbar__inner .navbar__title');5 expect(title).toBe('Playwright');6});7test('test2', async ({ page }) => {8 const title = await page.innerText('.navbar__inner .navbar__title');9 expect(title).toBe('Playwright');10});11test('test3', async ({ page }) => {12 const title = await page.innerText('.navbar__inner .navbar__title');13 expect(title).toBe('Playwright');14});15test('test4', async ({ page }) => {16 const title = await page.innerText('.navbar__inner .navbar__title');17 expect(title).toBe('Playwright');18});19test('test5', async ({ page }) => {20 const title = await page.innerText('.navbar__inner .navbar__title');21 expect(title).toBe('Playwright');22});23test('test6', async ({ page }) => {24 const title = await page.innerText('.navbar__inner .navbar__title');25 expect(title).toBe('Playwright');26});27test('test7', async ({ page }) => {28 const title = await page.innerText('.navbar__inner .navbar__title');29 expect(title).toBe('Playwright');30});31test('test8', async ({ page }) => {32 const title = await page.innerText('.navbar__inner .navbar__title');33 expect(title).toBe('Playwright');34});35test('test9', async ({ page }) => {36 const title = await page.innerText('.navbar__inner .navbar__title');37 expect(title).toBe('Playwright');38});39test('test10', async ({ page }) => {40 const title = await page.innerText('.navbar__inner .navbar__title');
Using AI Code Generation
1const { formatResultFailure } = require('@playwright/test/lib/reporters/utils');2const { test } = require('@playwright/test');3test('should fail', async ({ page }) => {4});5test('should pass', async ({ page }) => {6});7 4 | test('should fail', async ({ page }) => {8 6 | });9 8 | test('should pass', async ({ page }) => {10 at Object.toBe (__tests__/test.js:5:57)11 4 | test('should fail', async ({ page }) => {12 6 | });13 8 | test('should pass', async ({ page }) => {14 at Object.toBe (__tests__/test.js:5:57)
Using AI Code Generation
1const { formatResultFailure } = require('@playwright/test/lib/test/reporter');2const { test } = require('@playwright/test');3test('formatResultFailure', async ({ page }) => {4 const result = await page.evaluate(() => {5 const error = new Error('error message');6 error.stack = 'error stack';7 return formatResultFailure(error);8 });9 console.log(result);10});11 at ExecutionContext._evaluateInternal (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/ExecutionContext.js:217:19)12 at processTicksAndRejections (internal/process/task_queues.js:93:5)13 at async Page._onBindingCalled (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/Page.js:140:24)14 at async Promise.all (index 0)15 at async FrameManager._onBindingCalled (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/FrameManager.js:320:20)16 at async Promise.all (index 0)17 at async CDPSession.Page._onBindingCalled (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/Page.js:133:57)18 at async CDPSession.emit (events.js:315:20)19 at async CDPSession._onMessage (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/Connection.js:200:12)20 at async Connection._onMessage (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/Connection.js:112:17)21 at async WebSocketTransport._ws.addEventListener.event (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/WebSocketTransport.js:64:24)22 at async WebSocketTransport._dispatchMessage (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/WebSocketTransport.js:86:9)23 at async WebSocketTransport._ws.addEventListener.event (/Users/kirti/Documents/playwright-test/node_modules/playwright-core/lib/cjs/puppeteer/common/WebSocketTransport.js:
Using AI Code Generation
1const { formatResultFailure } = require('playwright/lib/test/runner');2const { test } = require('@playwright/test');3test('example', async ({ page }) => {4 try {5 } catch (e) {6 console.log(formatResultFailure(e, page));7 }8});
Using AI Code Generation
1const { formatResultFailure } = require('@playwright/test');2const test = test.extend({3 foo: async ({}, use) => {4 await use('bar');5 },6});7test('should work', async ({ foo }) => {8 expect(foo).toBe('bar');9});10const { test, expect } = require('@playwright/test');11test('should work', async ({ page }) => {12 const title = page.locator('.navbar__title');13 await expect(title).toHaveText('Playwright');14});15const { test } = require('@playwright/test');16test.use({17 foo: async ({}, use) => {18 await use('bar');19 },20});21test('should work', async ({ foo }) => {22 expect(foo).toBe('bar');23});
Using AI Code Generation
1const { formatResultFailure } = require('playwright/lib/server/frames');2const error = new Error();3error.stack = 'Error: Failed to find element matching selector "text=Test" at frame "mainFrame"';4error.message = 'Failed to find element matching selector "text=Test" at frame "mainFrame"';5const result = formatResultFailure(error);6console.log(result);7{8 error: {9 },10 value: {11 }12}131. [Playwright](
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!