fix(monorepo): explicitly list package.json exports instead of using glob patterns (#9584)

This commit is contained in:
Joel Einbinder 2021-10-19 12:28:02 -04:00 committed by GitHub
parent fc6a93d24e
commit 53c866c0f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
34 changed files with 45 additions and 51 deletions

View file

@ -31,7 +31,7 @@ try {
} }
console.log(`Downloading browsers...`); console.log(`Downloading browsers...`);
const { installDefaultBrowsersForNpmInstall } = require('./packages/playwright-core/lib/utils/registry'); const { installDefaultBrowsersForNpmInstall } = require('playwright-core/src/utils/registry');
installDefaultBrowsersForNpmInstall().catch(e => { installDefaultBrowsersForNpmInstall().catch(e => {
console.error(`Failed to install browsers, caused by\n${e.stack}`); console.error(`Failed to install browsers, caused by\n${e.stack}`);
process.exit(1); process.exit(1);

View file

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
const { start } = require('playwright-core/lib/outofprocess'); const { start } = require('node_modules/playwright-core/lib/outofprocess');
(async () => { (async () => {
const playwright = await start(); const playwright = await start();

View file

@ -16,7 +16,6 @@
import { chromium, firefox, webkit, selectors, devices, errors } from 'playwright-chromium'; import { chromium, firefox, webkit, selectors, devices, errors } from 'playwright-chromium';
import playwright from 'playwright-chromium'; import playwright from 'playwright-chromium';
import errorsFile from 'playwright-core/lib/utils/errors';
import testESM from './esm.mjs'; import testESM from './esm.mjs';
testESM({ chromium, firefox, webkit, selectors, devices, errors, playwright, errorsFile }, [chromium]); testESM({ chromium, firefox, webkit, selectors, devices, errors, playwright }, [chromium]);

View file

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
export default async function testESM({ chromium, firefox, webkit, selectors, devices, errors, playwright, errorsFile }, browsers) { export default async function testESM({ chromium, firefox, webkit, selectors, devices, errors, playwright }, browsers) {
if (playwright.chromium !== chromium) if (playwright.chromium !== chromium)
process.exit(1); process.exit(1);
if (playwright.firefox !== firefox) if (playwright.firefox !== firefox)
@ -23,8 +23,6 @@ export default async function testESM({ chromium, firefox, webkit, selectors, de
process.exit(1); process.exit(1);
if (playwright.errors !== errors) if (playwright.errors !== errors)
process.exit(1); process.exit(1);
if (errors.TimeoutError !== errorsFile.TimeoutError)
process.exit(1);
try { try {
for (const browserType of browsers) { for (const browserType of browsers) {

View file

@ -31,10 +31,6 @@ else if (process.argv[3])
const playwright = require(requireName); const playwright = require(requireName);
// Requiring internals should work.
const errors = require('playwright-core/lib/utils/errors');
const registry = require('playwright-core/lib/utils/registry');
(async () => { (async () => {
for (const browserType of success) { for (const browserType of success) {
try { try {

View file

@ -14,6 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
const { installBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry'); const { installBrowsersForNpmInstall } = require('playwright-core/src/utils/registry');
installBrowsersForNpmInstall(['chromium', 'ffmpeg']); installBrowsersForNpmInstall(['chromium', 'ffmpeg']);

View file

@ -19,8 +19,12 @@
"import": "./index.mjs", "import": "./index.mjs",
"require": "./index.js" "require": "./index.js"
}, },
"./src/*": "./lib/*.js", "./src/grid/gridClient": "./lib/grid/gridClient.js",
"./*": "./*.js" "./src/utils/async": "./lib/utils/async.js",
"./src/utils/httpServer": "./lib/utils/httpServer.js",
"./src/utils/processLauncher": "./lib/utils/processLauncher.js",
"./src/utils/registry": "./lib/utils/registry.js",
"./src/utils/utils": "./lib/utils/utils.js"
}, },
"types": "types/types.d.ts", "types": "types/types.d.ts",
"bin": { "bin": {

View file

@ -14,6 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
const { installBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry'); const { installBrowsersForNpmInstall } = require('playwright-core/src/utils/registry');
installBrowsersForNpmInstall(['firefox']); installBrowsersForNpmInstall(['firefox']);

View file

@ -15,7 +15,7 @@
*/ */
const pwt = require('./lib/index'); const pwt = require('./lib/index');
const playwright = require('playwright-core/lib/inprocess'); const playwright = require('playwright-core');
const combinedExports = { const combinedExports = {
...playwright, ...playwright,
...pwt, ...pwt,

View file

@ -127,7 +127,7 @@ export const test = _baseTest.extend<TestFixtures, WorkerAndFileFixtures>({
await use(gridClient.playwright() as any); await use(gridClient.playwright() as any);
await gridClient.close(); await gridClient.close();
} else { } else {
await use(require('playwright-core/lib/inprocess')); await use(require('playwright-core'));
} }
}, { scope: 'worker' } ], }, { scope: 'worker' } ],
headless: [ undefined, { scope: 'worker' } ], headless: [ undefined, { scope: 'worker' } ],

View file

@ -14,6 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
const { installBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry'); const { installBrowsersForNpmInstall } = require('playwright-core/src/utils/registry');
installBrowsersForNpmInstall(['webkit']); installBrowsersForNpmInstall(['webkit']);

View file

@ -14,6 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
const { installDefaultBrowsersForNpmInstall } = require('playwright-core/lib/utils/registry'); const { installDefaultBrowsersForNpmInstall } = require('playwright-core/src/utils/registry');
installDefaultBrowsersForNpmInstall(); installDefaultBrowsersForNpmInstall();

View file

@ -15,8 +15,7 @@
".": { ".": {
"import": "./index.mjs", "import": "./index.mjs",
"require": "./index.js" "require": "./index.js"
}, }
"./": "./"
}, },
"scripts": { "scripts": {
"install": "node install.js" "install": "node install.js"

View file

@ -18,7 +18,7 @@
import { playwrightTest as test, expect } from './config/browserTest'; import { playwrightTest as test, expect } from './config/browserTest';
import fs from 'fs'; import fs from 'fs';
import * as path from 'path'; import * as path from 'path';
import { getUserAgent } from 'playwright-core/lib/utils/utils'; import { getUserAgent } from 'playwright-core/src/utils/utils';
import WebSocket from 'ws'; import WebSocket from 'ws';
import { suppressCertificateWarning } from './config/utils'; import { suppressCertificateWarning } from './config/utils';

View file

@ -18,7 +18,7 @@ import { playwrightTest as test, expect } from './config/browserTest';
import type { TestInfo } from '@playwright/test'; import type { TestInfo } from '@playwright/test';
import path from 'path'; import path from 'path';
import fs from 'fs'; import fs from 'fs';
import { start } from 'playwright-core/lib/outofprocess'; import { start } from '../packages/playwright-core/lib/outofprocess';
const chromeDriver = require('chromedriver').path; const chromeDriver = require('chromedriver').path;
const brokenDriver = path.join(__dirname, 'assets', 'selenium-grid', 'broken-selenium-driver.js'); const brokenDriver = path.join(__dirname, 'assets', 'selenium-grid', 'broken-selenium-driver.js');

View file

@ -18,7 +18,7 @@
import { contextTest as test, expect } from '../config/browserTest'; import { contextTest as test, expect } from '../config/browserTest';
import { playwrightTest } from '../config/browserTest'; import { playwrightTest } from '../config/browserTest';
import http from 'http'; import http from 'http';
import { getUserAgent } from 'playwright-core/lib/utils/utils'; import { getUserAgent } from 'playwright-core/src/utils/utils';
import { suppressCertificateWarning } from '../config/utils'; import { suppressCertificateWarning } from '../config/utils';
test('should create a worker from a service worker', async ({ page, server }) => { test('should create a worker from a service worker', async ({ page, server }) => {

View file

@ -15,7 +15,8 @@
*/ */
import { playwrightTest as it, expect } from './config/browserTest'; import { playwrightTest as it, expect } from './config/browserTest';
import { parseComponentSelector, ParsedComponentSelector } from 'playwright-core/lib/server/common/componentUtils'; import type { ParsedComponentSelector } from '../packages/playwright-core/src/server/common/componentUtils';
import { parseComponentSelector } from '../packages/playwright-core/lib/server/common/componentUtils';
const parse = parseComponentSelector; const parse = parseComponentSelector;
const serialize = (parsed: ParsedComponentSelector) => { const serialize = (parsed: ParsedComponentSelector) => {

View file

@ -18,7 +18,7 @@ import { Fixtures, _baseTest } from '@playwright/test';
import * as path from 'path'; import * as path from 'path';
import * as fs from 'fs'; import * as fs from 'fs';
import { installCoverageHooks } from './coverage'; import { installCoverageHooks } from './coverage';
import { start } from 'playwright-core/lib/outofprocess'; import { start } from '../../packages/playwright-core/lib/outofprocess';
import { GridClient } from 'playwright-core/src/grid/gridClient'; import { GridClient } from 'playwright-core/src/grid/gridClient';
import type { LaunchOptions } from 'playwright-core'; import type { LaunchOptions } from 'playwright-core';
import { commonFixtures, CommonFixtures, serverFixtures, ServerFixtures, ServerOptions } from './commonFixtures'; import { commonFixtures, CommonFixtures, serverFixtures, ServerFixtures, ServerOptions } from './commonFixtures';
@ -91,7 +91,7 @@ const baseFixtures: Fixtures<{}, BaseOptions & BaseFixtures> = {
service: new ServiceMode(), service: new ServiceMode(),
driver: new DriverMode(), driver: new DriverMode(),
}[mode]; }[mode];
require('playwright-core/lib/utils/utils').setUnderTest(); require('playwright-core/src/utils/utils').setUnderTest();
const playwright = await modeImpl.setup(workerInfo.workerIndex); const playwright = await modeImpl.setup(workerInfo.workerIndex);
await run(playwright); await run(playwright);
await modeImpl.teardown(); await modeImpl.teardown();

View file

@ -16,7 +16,7 @@
import type { Fixtures } from '@playwright/test'; import type { Fixtures } from '@playwright/test';
import type { Browser, BrowserContext, BrowserContextOptions, BrowserType, LaunchOptions, Page } from 'playwright-core'; import type { Browser, BrowserContext, BrowserContextOptions, BrowserType, LaunchOptions, Page } from 'playwright-core';
import { removeFolders } from 'playwright-core/lib/utils/utils'; import { removeFolders } from 'playwright-core/src/utils/utils';
import { ReuseBrowserContextStorage } from '@playwright/test/src/index'; import { ReuseBrowserContextStorage } from '@playwright/test/src/index';
import * as path from 'path'; import * as path from 'path';
import * as fs from 'fs'; import * as fs from 'fs';
@ -24,7 +24,7 @@ import * as os from 'os';
import { RemoteServer, RemoteServerOptions } from './remoteServer'; import { RemoteServer, RemoteServerOptions } from './remoteServer';
import { baseTest, CommonWorkerFixtures } from './baseTest'; import { baseTest, CommonWorkerFixtures } from './baseTest';
import { CommonFixtures } from './commonFixtures'; import { CommonFixtures } from './commonFixtures';
import { ParsedStackTrace } from 'playwright-core/src/utils/stackTrace'; import type { ParsedStackTrace } from 'playwright-core/src/utils/stackTrace';
type PlaywrightWorkerOptions = { type PlaywrightWorkerOptions = {
executablePath: LaunchOptions['executablePath']; executablePath: LaunchOptions['executablePath'];

View file

@ -63,8 +63,8 @@ function traceAPICoverage(apiCoverage, api, events) {
* @param {string} browserName * @param {string} browserName
*/ */
function apiForBrowser(browserName) { function apiForBrowser(browserName) {
const events = require('playwright-core/lib/client/events').Events; const events = require('../../packages/playwright-core/lib/client/events').Events;
const api = require('playwright-core/lib/client/api'); const api = require('../../packages/playwright-core/lib/client/api');
const otherBrowsers = ['chromium', 'webkit', 'firefox'].filter(name => name.toLowerCase() !== browserName.toLowerCase()); const otherBrowsers = ['chromium', 'webkit', 'firefox'].filter(name => name.toLowerCase() !== browserName.toLowerCase());
const filteredKeys = Object.keys(api).filter(apiName => { const filteredKeys = Object.keys(api).filter(apiName => {
if (apiName.toLowerCase().startsWith('android')) if (apiName.toLowerCase().startsWith('android'))

View file

@ -15,7 +15,7 @@
*/ */
import { playwrightTest as it, expect } from './config/browserTest'; import { playwrightTest as it, expect } from './config/browserTest';
import { parseCSS, serializeSelector as serialize } from 'playwright-core/lib/server/common/cssParser'; import { parseCSS, serializeSelector as serialize } from '../packages/playwright-core/lib/server/common/cssParser';
const parse = (selector: string) => { const parse = (selector: string) => {
return parseCSS(selector, new Set(['text', 'not', 'has', 'react', 'scope', 'right-of', 'is'])).selector; return parseCSS(selector, new Set(['text', 'not', 'has', 'react', 'scope', 'right-of', 'is'])).selector;

View file

@ -15,7 +15,7 @@
*/ */
import http from 'http'; import http from 'http';
import { getPlaywrightVersion } from 'playwright-core/lib/utils/utils'; import { getPlaywrightVersion } from 'playwright-core/src/utils/utils';
import { expect, playwrightTest as it } from './config/browserTest'; import { expect, playwrightTest as it } from './config/browserTest';
it.skip(({ mode }) => mode !== 'default'); it.skip(({ mode }) => mode !== 'default');

View file

@ -28,7 +28,7 @@ type CLITestArgs = {
runCLI: (args: string[]) => CLIMock; runCLI: (args: string[]) => CLIMock;
}; };
const playwrightToAutomateInspector = require('playwright-core/lib/inProcessFactory').createInProcessPlaywright(); const playwrightToAutomateInspector = require('../../packages/playwright-core/lib/inProcessFactory').createInProcessPlaywright();
export const test = contextTest.extend<CLITestArgs>({ export const test = contextTest.extend<CLITestArgs>({
recorderPageGetter: async ({ context, toImpl, mode }, run, testInfo) => { recorderPageGetter: async ({ context, toImpl, mode }, run, testInfo) => {

View file

@ -17,15 +17,12 @@
import { playwrightTest as it, expect } from './config/browserTest'; import { playwrightTest as it, expect } from './config/browserTest';
it('should require top-level Errors', async ({}) => { it('should have an errors object', async ({ playwright }) => {
const Errors = require('playwright-core/lib/utils/errors'); expect(String(playwright.errors.TimeoutError)).toContain('TimeoutError');
expect(String(Errors.TimeoutError)).toContain('TimeoutError');
}); });
it('should require top-level DeviceDescriptors', async ({ playwright }) => { it('should have a devices object', async ({ playwright }) => {
const Devices = require('playwright-core/lib/server/deviceDescriptors'); expect(playwright.devices['iPhone 6']).toBeTruthy();
expect(Devices['iPhone 6']).toBeTruthy();
expect(Devices['iPhone 6']).toEqual(playwright.devices['iPhone 6']);
expect(playwright.devices['iPhone 6'].defaultBrowserType).toBe('webkit'); expect(playwright.devices['iPhone 6'].defaultBrowserType).toBe('webkit');
}); });

View file

@ -16,7 +16,7 @@
*/ */
import { test as it, expect } from './pageTest'; import { test as it, expect } from './pageTest';
import { globToRegex } from 'playwright-core/lib/client/clientHelper'; import { globToRegex } from '../../packages/playwright-core/lib/client/clientHelper';
import vm from 'vm'; import vm from 'vm';
it('should work with navigation', async ({ page, server }) => { it('should work with navigation', async ({ page, server }) => {

View file

@ -18,7 +18,7 @@ import { test, expect, stripAscii } from './playwright-test-fixtures';
import fs from 'fs'; import fs from 'fs';
import path from 'path'; import path from 'path';
import { spawnSync } from 'child_process'; import { spawnSync } from 'child_process';
import { registry } from 'playwright-core/lib/utils/registry'; import { registry } from 'playwright-core/src/utils/registry';
const ffmpeg = registry.findExecutable('ffmpeg')!.executablePath(); const ffmpeg = registry.findExecutable('ffmpeg')!.executablePath();

View file

@ -20,7 +20,7 @@ import path from 'path';
import net from 'net'; import net from 'net';
import { contextTest, expect } from './config/browserTest'; import { contextTest, expect } from './config/browserTest';
import { PlaywrightClient } from 'playwright-core/lib/remote/playwrightClient'; import { PlaywrightClient } from '../packages/playwright-core/lib/remote/playwrightClient';
import type { Page } from 'playwright-core'; import type { Page } from 'playwright-core';
class OutOfProcessPlaywrightServer { class OutOfProcessPlaywrightServer {

View file

@ -15,7 +15,7 @@
*/ */
import { contextTest, expect } from './config/browserTest'; import { contextTest, expect } from './config/browserTest';
import { InMemorySnapshotter } from 'playwright-core/lib/web/traceViewer/inMemorySnapshotter'; import { InMemorySnapshotter } from '../packages/playwright-core/lib/web/traceViewer/inMemorySnapshotter';
const it = contextTest.extend<{ snapshotter: InMemorySnapshotter }>({ const it = contextTest.extend<{ snapshotter: InMemorySnapshotter }>({
snapshotter: async ({ mode, toImpl, context }, run, testInfo) => { snapshotter: async ({ mode, toImpl, context }, run, testInfo) => {

View file

@ -16,7 +16,7 @@
import path from 'path'; import path from 'path';
import type { Browser, Frame, Locator, Page } from 'playwright-core'; import type { Browser, Frame, Locator, Page } from 'playwright-core';
import { showTraceViewer } from 'playwright-core/lib/server/trace/viewer/traceViewer'; import { showTraceViewer } from '../../packages/playwright-core/lib/server/trace/viewer/traceViewer';
import { playwrightTest, expect } from '../config/browserTest'; import { playwrightTest, expect } from '../config/browserTest';
class TraceViewerPage { class TraceViewerPage {

View file

@ -15,7 +15,7 @@
*/ */
import { expect, contextTest as test, browserTest } from './config/browserTest'; import { expect, contextTest as test, browserTest } from './config/browserTest';
import { ZipFileSystem } from 'playwright-core/lib/utils/vfs'; import { ZipFileSystem } from '../packages/playwright-core/lib/utils/vfs';
import jpeg from 'jpeg-js'; import jpeg from 'jpeg-js';
test.skip(({ trace }) => !!trace); test.skip(({ trace }) => !!trace);

View file

@ -19,7 +19,7 @@ import fs from 'fs';
import path from 'path'; import path from 'path';
import { spawnSync } from 'child_process'; import { spawnSync } from 'child_process';
import { PNG } from 'pngjs'; import { PNG } from 'pngjs';
import { registry } from 'playwright-core/lib/utils/registry'; import { registry } from 'playwright-core/src/utils/registry';
const ffmpeg = registry.findExecutable('ffmpeg')!.executablePath(); const ffmpeg = registry.findExecutable('ffmpeg')!.executablePath();

View file

@ -18,7 +18,7 @@
const path = require('path'); const path = require('path');
const os = require('os'); const os = require('os');
const toKebabCase = require('lodash/kebabCase') const toKebabCase = require('lodash/kebabCase')
const devices = require('playwright-core/lib/server/deviceDescriptors'); const devices = require('../../packages/playwright-core/lib/server/deviceDescriptors');
const Documentation = require('../doclint/documentation'); const Documentation = require('../doclint/documentation');
const PROJECT_DIR = path.join(__dirname, '..', '..'); const PROJECT_DIR = path.join(__dirname, '..', '..');
const fs = require('fs'); const fs = require('fs');

View file

@ -4,7 +4,7 @@ const fs = require('fs');
const util = require('util'); const util = require('util');
const path = require('path'); const path = require('path');
const {spawn} = require('child_process'); const {spawn} = require('child_process');
const {registryDirectory} = require('playwright-core/lib/utils/registry.js'); const {registryDirectory} = require('playwright-core/src/utils/registry.js');
const readdirAsync = util.promisify(fs.readdir.bind(fs)); const readdirAsync = util.promisify(fs.readdir.bind(fs));
const readFileAsync = util.promisify(fs.readFile.bind(fs)); const readFileAsync = util.promisify(fs.readFile.bind(fs));

View file

@ -17,7 +17,7 @@
*/ */
const path = require('path'); const path = require('path');
const {Registry} = require('../packages/playwright-core/lib/utils/registry'); const {Registry} = require('../packages/playwright-core/src/utils/registry');
const fs = require('fs'); const fs = require('fs');
const protocolGenerator = require('./protocol-types-generator'); const protocolGenerator = require('./protocol-types-generator');
const {execSync} = require('child_process'); const {execSync} = require('child_process');