chore: split playwright.fixtures into files (4) (#3985)

This commit is contained in:
Pavel Feldman 2020-09-26 10:59:27 -07:00 коммит произвёл GitHub
Родитель cef27d620b
Коммит 0ee9050f1b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
141 изменённых файлов: 435 добавлений и 410 удалений

30
package-lock.json сгенерированный
Просмотреть файл

@ -2029,6 +2029,16 @@
"dev": true,
"optional": true
},
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dev": true,
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@ -3718,6 +3728,13 @@
"flat-cache": "^2.0.1"
}
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true,
"optional": true
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@ -5371,6 +5388,13 @@
"readable-stream": "^2.0.5"
}
},
"nan": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
"dev": true,
"optional": true
},
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@ -7785,7 +7809,11 @@
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
"optional": true
"optional": true,
"requires": {
"bindings": "^1.5.0",
"nan": "^2.12.1"
}
},
"glob-parent": {
"version": "3.1.0",

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
it('should work', async ({ page, isFirefox, isChromium }) => {
await page.setContent(`

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should await navigation when clicking anchor', async ({page, server}) => {
const messages = [];

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it } from './playwright.fixtures';
import { it } from './fixtures';
it('clicking on links which do not commit navigation', async ({page, server, httpsServer}) => {
await page.goto(server.EMPTY_PAGE);

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should create new page', async function({browser}) {
const page1 = await browser.newPage();

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({context, page, server}) => {
await page.goto(server.EMPTY_PAGE);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { verifyViewport } from './utils';
it('should create new context', async function({browser}) {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should clear cookies', async ({context, page, server}) => {
await page.goto(server.EMPTY_PAGE);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should return no cookies in pristine browser context', async ({context, page, server}) => {
expect(await context.cookies()).toEqual([]);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should fail without credentials', (test, parameters) => {
test.fail(options.CHROMIUM(parameters) && !options.HEADLESS);

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should bypass CSP meta tag', async ({browser, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
describe('device', (suite, parameters) => {
suite.skip(options.FIREFOX(parameters));

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('expose binding should work', async ({browser}) => {
const context = await browser.newContext();

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should affect accept-language header', async ({browser, server}) => {
const context = await browser.newContext({ locale: 'fr-CH' });

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should have url', async ({browser, server}) => {
const context = await browser.newContext();

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should intercept', async ({browser, server}) => {
const context = await browser.newContext();

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({ browser }) => {
const func = () => new Date(1479579154987).toString();

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should work', async ({browser, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
describe('mobile viewport', (suite, parameters) => {
suite.skip(options.FIREFOX(parameters));

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { verifyViewport } from './utils';
it('should get the proper default viewport size', async ({page, server}) => {

Просмотреть файл

@ -16,7 +16,7 @@
*/
import fs from 'fs';
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('browserType.executablePath should work', test => {
test.skip(Boolean(process.env.CRPATH || process.env.FFPATH || process.env.WKPATH));

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { options } from './playwright.fixtures';
import { options } from './fixtures';
import { serverFixtures } from './remoteServer.fixture';
const { it, expect, describe } = serverFixtures;

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
describe('lauch server', suite => {
suite.skip(options.WIRE);

Просмотреть файл

@ -16,7 +16,7 @@
*/
import path from 'path';
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should reject all promises when browser is closed', async ({browserType, defaultBrowserOptions}) => {
const browser = await browserType.launch(defaultBrowserOptions);

Просмотреть файл

@ -15,7 +15,7 @@
*/
import url from 'url';
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('Web Assembly should work', (test, parameters) => {
test.fail(options.WEBKIT(parameters) && options.WIN(parameters));

Просмотреть файл

@ -16,7 +16,7 @@
*/
import domain from 'domain';
import { options, fixtures as baseFixtures } from './playwright.fixtures';
import { options, fixtures as baseFixtures } from './fixtures';
import type { ChromiumBrowser } from '..';
type DomainFixtures = {

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should check the box', async ({page}) => {
await page.setContent(`<input id='checkbox' type='checkbox'></input>`);

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
describe('oopif', (suite, parameters) => {
suite.skip(!options.CHROMIUM(parameters));

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
it('should be missing', (test, parameters) => {
test.skip(options.CHROMIUM(parameters));

Просмотреть файл

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect, describe, options } from '../playwright.fixtures';
import { it, expect, describe, options } from '../fixtures';
import type { ChromiumBrowserContext } from '../..';
describe('chromium', (suite, parameters) => {

Просмотреть файл

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect, options } from '../playwright.fixtures';
import { it, expect, options } from '../fixtures';
import path from 'path';
import type { ChromiumBrowser, ChromiumBrowserContext } from '../..';

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { options, fixtures as playwrightFixtures } from '../playwright.fixtures';
import { options, fixtures as playwrightFixtures } from '../fixtures';
const { it, expect, describe, overrideWorkerFixture } = playwrightFixtures;
overrideWorkerFixture('browser', async ({browserType, defaultBrowserOptions}, test) => {

Просмотреть файл

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect, describe, options } from '../playwright.fixtures';
import { it, expect, describe, options } from '../fixtures';
import type { ChromiumBrowserContext, ChromiumBrowser } from '../../types/types';
describe('session', (suite, parameters) => {

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { options, fixtures as playwrightFixtures } from '../playwright.fixtures';
import { options, fixtures as playwrightFixtures } from '../fixtures';
import fs from 'fs';
import path from 'path';
import type { ChromiumBrowser } from '../..';

Просмотреть файл

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
declare const renderComponent;
declare const e;

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should avoid side effects after timeout', (test, parameters) => {
test.skip(options.WIRE);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should timeout waiting for display:none to be gone', async ({page, server}) => {
await page.goto(server.PREFIX + '/input/button.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should fail when element jumps during hit testing', (test, parameters) => {
test.skip(options.WIRE);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should timeout waiting for stable position', async ({page, server}) => {
await page.goto(server.PREFIX + '/input/button.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame } from './utils';
async function giveItAChanceToClick(page) {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { verifyViewport } from './utils';
import fs from 'fs';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import fs from 'fs';
it('should support hasTouch option', async ({server, launchPersistent}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should fire', async ({page, server}) => {
page.on('dialog', dialog => {

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should dispatch click event', async ({page, server}) => {
await page.goto(server.PREFIX + '/input/button.html');

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { options } from './playwright.fixtures';
import { options } from './fixtures';
import { serverFixtures } from './remoteServer.fixture';
const { it, expect, beforeEach } = serverFixtures;

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { fixtures as baseFixtures } from './playwright.fixtures';
import { fixtures as baseFixtures } from './fixtures';
import fs from 'fs';
import type { Browser, BrowserContext } from '..';

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { options } from '../playwright.fixtures';
import { options } from '../fixtures';
import { electronFixtures } from './electron.fixture';
const { it, expect, describe } = electronFixtures;

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { options } from '../playwright.fixtures';
import { options } from '../fixtures';
import { electronFixtures } from './electron.fixture';
const { it, expect, describe } = electronFixtures;

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { fixtures as baseFixtures } from '../playwright.fixtures';
import { fixtures as baseFixtures } from '../fixtures';
import type {ElectronApplication, ElectronLauncher, ElectronPage} from '../../electron-types';
import path from 'path';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should work', (test, parameters) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({ page, server }) => {
await page.goto(server.PREFIX + '/input/button.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should work', async ({ page, server }) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should have a nice preview', async ({ page, server }) => {
await page.goto(`${server.PREFIX}/dom.html`);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page, server}) => {
await page.setContent('<html><body><div class="tweet"><div class="like">100</div><div class="retweets">10</div></div></body></html>');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should hover', async ({ page, server }) => {
await page.goto(server.PREFIX + '/input/scrollable.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame } from './utils';
it('should work', async ({ page, server }) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({ page }) => {
await page.setContent(`<input type='text' />`);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should query existing element', async ({page, server}) => {
await page.goto(server.PREFIX + '/playground.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
import { verifyViewport } from './utils';
import {PNG} from 'pngjs';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({ page, server }) => {
await page.goto(server.PREFIX + '/offscreenbuttons.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should select textarea', async ({ page, server, isFirefox }) => {
await page.goto(server.PREFIX + '/input/textarea.html');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({ page }) => {
await page.setContent(`<input type='text' />`);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
async function giveItAChanceToResolve(page) {
for (let i = 0; i < 5; i++)

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame } from './utils';
it('should think that it is focused by default', async ({page}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work with css selector', async ({page, server}) => {
await page.setContent('<div>hello</div><div>beautiful</div><div>world!</div>');

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work with css selector', async ({page, server}) => {
await page.setContent('<section id="testAttribute">43543</section>');

Просмотреть файл

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { it, expect, options } from '../playwright.fixtures';
import { it, expect, options } from '../fixtures';
it('should pass firefox user preferences', (test, parameters) => {
test.skip(!options.FIREFOX(parameters));

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { options } from './playwright.fixtures';
import { options } from './fixtures';
import { serverFixtures } from './remoteServer.fixture';
import { execSync } from 'child_process';
import path from 'path';

170
test/fixtures.ts Normal file
Просмотреть файл

@ -0,0 +1,170 @@
/**
* Copyright Microsoft Corporation. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { config } from '@playwright/test-runner';
import assert from 'assert';
import childProcess from 'child_process';
import fs from 'fs';
import path from 'path';
import util from 'util';
import type { Browser, BrowserContext, BrowserType, Page } from '../index';
import { Connection } from '../lib/client/connection';
import { Transport } from '../lib/protocol/transport';
import { installCoverageHooks } from './coverage';
import { fixtures as httpFixtures } from './http.fixtures';
import { fixtures as implFixtures } from './impl.fixtures';
import { fixtures as platformFixtures, options as platformOptions } from './platform.fixtures';
import { fixtures as playwrightFixtures, options as playwrightOptions } from './playwright.fixtures';
export { expect } from '@playwright/test/out/matcher.fixtures';
export { config } from '@playwright/test-runner';
const removeFolderAsync = util.promisify(require('rimraf'));
type AllParameters = {
browserName: string;
};
type AllWorkerFixtures = {
golden: (path: string) => string;
};
type AllTestFixtures = {
createUserDataDir: () => Promise<string>;
launchPersistent: (options?: Parameters<BrowserType<Browser>['launchPersistentContext']>[1]) => Promise<{context: BrowserContext, page: Page}>;
};
export const fixtures = playwrightFixtures
.union(httpFixtures)
.union(platformFixtures)
.union(implFixtures)
.declareParameters<AllParameters>()
.declareWorkerFixtures<AllWorkerFixtures>()
.declareTestFixtures<AllTestFixtures>();
const { defineTestFixture, defineWorkerFixture, overrideWorkerFixture } = fixtures;
export const it = fixtures.it;
export const fit = fixtures.fit;
export const xit = fixtures.xit;
export const describe = fixtures.describe;
export const fdescribe = fixtures.fdescribe;
export const xdescribe = fixtures.xdescribe;
export const beforeEach = fixtures.beforeEach;
export const afterEach = fixtures.afterEach;
export const beforeAll = fixtures.beforeAll;
export const afterAll = fixtures.afterAll;
export const options = {
...platformOptions,
...playwrightOptions,
WIRE: !!process.env.PWWIRE,
};
const getExecutablePath = browserName => {
if (browserName === 'chromium' && process.env.CRPATH)
return process.env.CRPATH;
if (browserName === 'firefox' && process.env.FFPATH)
return process.env.FFPATH;
if (browserName === 'webkit' && process.env.WKPATH)
return process.env.WKPATH;
};
overrideWorkerFixture('defaultBrowserOptions', async ({browserName}, runTest) => {
const executablePath = getExecutablePath(browserName);
if (executablePath)
console.error(`Using executable at ${executablePath}`);
await runTest({
handleSIGINT: false,
slowMo: options.SLOW_MO,
headless: options.HEADLESS,
executablePath,
artifactsPath: config.outputDir,
});
});
overrideWorkerFixture('playwright', async ({browserName, testWorkerIndex, platform}, test) => {
assert(platform); // Depend on platform to generate all tests.
const {coverage, uninstall} = installCoverageHooks(browserName);
if (options.WIRE) {
require('../lib/utils/utils').setUnderTest();
const connection = new Connection();
const spawnedProcess = childProcess.fork(path.join(__dirname, '..', 'lib', 'server.js'), [], {
stdio: 'pipe',
detached: true,
});
spawnedProcess.unref();
const onExit = (exitCode, signal) => {
throw new Error(`Server closed with exitCode=${exitCode} signal=${signal}`);
};
spawnedProcess.on('exit', onExit);
const transport = new Transport(spawnedProcess.stdin, spawnedProcess.stdout);
connection.onmessage = message => transport.send(JSON.stringify(message));
transport.onmessage = message => connection.dispatch(JSON.parse(message));
const playwrightObject = await connection.waitForObjectWithKnownName('Playwright');
await test(playwrightObject);
spawnedProcess.removeListener('exit', onExit);
spawnedProcess.stdin.destroy();
spawnedProcess.stdout.destroy();
spawnedProcess.stderr.destroy();
await teardownCoverage();
} else {
const playwright = require('../index');
await test(playwright);
await teardownCoverage();
}
async function teardownCoverage() {
uninstall();
const coveragePath = path.join(__dirname, 'coverage-report', testWorkerIndex + '.json');
const coverageJSON = [...coverage.keys()].filter(key => coverage.get(key));
await fs.promises.mkdir(path.dirname(coveragePath), { recursive: true });
await fs.promises.writeFile(coveragePath, JSON.stringify(coverageJSON, undefined, 2), 'utf8');
}
});
defineWorkerFixture('golden', async ({browserName}, test) => {
await test(p => path.join(browserName, p));
});
defineTestFixture('createUserDataDir', async ({testOutputDir}, runTest) => {
let counter = 0;
const dirs: string[] = [];
async function createUserDataDir() {
const dir = path.join(testOutputDir, `user-data-dir-${counter++}`);
dirs.push(dir);
await fs.promises.mkdir(dir, { recursive: true });
return dir;
}
await runTest(createUserDataDir);
// Remove user data dirs, because we cannot upload them as test result artifacts.
// - Firefox removes lock file later, repsumably from another watchdog process?
// - WebKit has circular symlinks that makes CI go crazy.
await Promise.all(dirs.map(dir => removeFolderAsync(dir).catch(e => {})));
});
defineTestFixture('launchPersistent', async ({createUserDataDir, defaultBrowserOptions, browserType}, test) => {
let context;
async function launchPersistent(options) {
if (context)
throw new Error('can only launch one persitent context');
const userDataDir = await createUserDataDir();
context = await browserType.launchPersistentContext(userDataDir, {...defaultBrowserOptions, ...options});
const page = context.pages()[0];
return {context, page};
}
await test(launchPersistent);
if (context)
await context.close();
});

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should work', (test, parameters) => {
test.skip(options.FIREFOX(parameters));

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame, detachFrame } from './utils';
import type { Frame } from '../src/client/frame';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should work', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should navigate subframes', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame, detachFrame } from './utils';
import type { Frame } from '../index';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page, server, context}) => {
await context.grantPermissions(['geolocation']);

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should have default url when launching browser', async ({browserType, defaultBrowserOptions, createUserDataDir}) => {
const browserContext = await browserType.launchPersistentContext(await createUserDataDir(), {...defaultBrowserOptions, headless: false });

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({browser, httpsServer}) => {
let error = null;

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { fixtures as playwrightFixtures } from './upstream.fixtures';
import { fixtures as playwrightFixtures } from './playwright.fixtures';
type ImplWorkerFixtures = {
toImpl: (rpcObject: any) => any;

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { globToRegex } from '../lib/client/clientHelper';
import vm from 'vm';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page}) => {
const aHandle = await page.evaluateHandle(() => document.body);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work with function', async ({page}) => {
const windowHandle = await page.evaluateHandle(() => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page}) => {
const aHandle = await page.evaluateHandle(() => ({foo: 'bar'}));

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page}) => {
const aHandle = await page.evaluateHandle(() => ({

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work for primitives', async ({page}) => {
const numberHandle = await page.evaluateHandle(() => 2);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame } from './utils';
it('should type into a textarea', async ({page}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should require top-level Errors', async ({}) => {
const Errors = require('../lib/utils/errors.js');

Просмотреть файл

@ -14,7 +14,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should log', async ({browserType, defaultBrowserOptions}) => {
const log = [];

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, xdescribe, options } from './playwright.fixtures';
import { it, expect, xdescribe, options } from './fixtures';
function dimensions() {
const rect = document.querySelector('textarea').getBoundingClientRect();

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it } from './playwright.fixtures';
import { it } from './fixtures';
it('should work with _blank target', async ({page, server}) => {
server.setRoute('/empty.html', (req, res) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import { attachFrame } from './utils';
it('should work for main frame navigation request', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import fs from 'fs';
import path from 'path';

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import path from 'path';
it('should evaluate before anything else on the page', async ({ page, server }) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
import path from 'path';
it('should throw an error if no options are provided', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import path from 'path';
it('should throw an error if no options are provided', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should reject all promises when page is closed', async ({context}) => {
const newPage = await context.newPage();

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import { attachFrame } from './utils';
it('should emulate type', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
it('should work', async ({page, server}) => {
const windowHandle = await page.evaluateHandle(() => window);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, options } from './playwright.fixtures';
import { it, expect, options } from './fixtures';
it('should work', async ({ page, server }) => {
const result = await page.evaluate(() => 7 * 3);

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect } from './playwright.fixtures';
import { it, expect } from './fixtures';
import util from 'util';
it('should work', async ({page, server}) => {

Просмотреть файл

@ -15,7 +15,7 @@
* limitations under the License.
*/
import { it, expect, describe, options } from './playwright.fixtures';
import { it, expect, describe, options } from './fixtures';
function crash(page, toImpl, browserName) {
if (browserName === 'chromium')

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше