mirror of
https://github.com/microsoft/playwright.git
synced 2024-11-24 06:49:04 +03:00
chore: fix typos (#30645)
This commit is contained in:
parent
cf3ff6531a
commit
150cbcbdf3
@ -910,10 +910,10 @@ await expect(
|
||||
assertThat(page.getByText("Welcome")).isVisible();
|
||||
|
||||
// At least one item in the list is visible.
|
||||
asserThat(page.getByTestId("todo-item").first()).isVisible();
|
||||
assertThat(page.getByTestId("todo-item").first()).isVisible();
|
||||
|
||||
// At least one of the two elements is visible, possibly both.
|
||||
asserThat(
|
||||
assertThat(
|
||||
page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Sign in"))
|
||||
.or(page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Sign up")))
|
||||
.first()
|
||||
|
@ -571,7 +571,7 @@ Whether to emulate network being offline. Defaults to `false`. Learn more about
|
||||
- `username` <[string]>
|
||||
- `password` <[string]>
|
||||
- `origin` ?<[string]> Restrain sending http credentials on specific origin (scheme://host:port).
|
||||
- `sendImmediately` ?<[boolean]> Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent from the browser.
|
||||
- `sendImmediately` ?<[boolean]> Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent from the browser.
|
||||
|
||||
Credentials for [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication).
|
||||
If no origin is specified, the username and password are sent to any servers upon unauthorized responses.
|
||||
@ -751,7 +751,7 @@ Whether to allow sites to register Service workers. Defaults to `'allow'`.
|
||||
* since: v1.41
|
||||
- `behavior` <[UnrouteBehavior]<"wait"|"ignoreErrors"|"default">>
|
||||
|
||||
Specifies wether to wait for already running handlers and what to do if they throw errors:
|
||||
Specifies whether to wait for already running handlers and what to do if they throw errors:
|
||||
* `'default'` - do not wait for current handler calls (if any) to finish, if unrouted handler throws, it may result in unhandled error
|
||||
* `'wait'` - wait for current handler calls (if any) to finish
|
||||
* `'ignoreErrors'` - do not wait for current handler calls (if any) to finish, all errors thrown by the handlers after unrouting are silently caught
|
||||
|
@ -371,7 +371,7 @@ pwsh bin/Debug/netX/playwright.ps1 codegen github.com/microsoft/playwright --sav
|
||||
|
||||
After performing authentication and closing the browser, `auth.json` will contain the storage state which you can then reuse in your tests.
|
||||
|
||||
<img width="1394" alt="login to Github screen" src="https://user-images.githubusercontent.com/13063165/220561688-04b2b984-4ba6-4446-8b0a-8058876e2a02.png" />
|
||||
<img width="1394" alt="login to GitHub screen" src="https://user-images.githubusercontent.com/13063165/220561688-04b2b984-4ba6-4446-8b0a-8058876e2a02.png" />
|
||||
|
||||
Make sure you only use the `auth.json` locally as it contains sensitive information. Add it to your `.gitignore` or delete it once you have finished generating your tests.
|
||||
|
||||
|
@ -195,7 +195,7 @@ test('my test', async ({ page }) => {
|
||||
});
|
||||
```
|
||||
|
||||
Alternatively, you can delcare a hook **with a title**.
|
||||
Alternatively, you can declare a hook **with a title**.
|
||||
|
||||
```js title="example.spec.ts"
|
||||
test.afterEach('Status check', async ({ page }) => {
|
||||
|
@ -83,8 +83,8 @@ Complete set of Playwright Test options is available in the [configuration file]
|
||||
| `--debug`| Run tests with Playwright Inspector. Shortcut for `PWDEBUG=1` environment variable and `--timeout=0 --max-failures=1 --headed --workers=1` options.|
|
||||
| `--forbid-only` | Whether to disallow `test.only`. Useful on CI.|
|
||||
| `--global-timeout <number>` | Total timeout for the whole test run in milliseconds. By default, there is no global timeout. Learn more about [various timeouts](./test-timeouts.md).|
|
||||
| `-g <grep>` or `--grep <grep>` | Only run tests matching this regular expression. For example, this will run `'should add to cart'` when passed `-g "add to cart"`. The regular expression will be tested against the string that consists of the test file name, `test.describe` titles if any, test title and all test tags, separated by spaces, e.g. `my-test.spec.ts my-suite my-test @smoke`. The filter does not apply to the tests from dependcy projects, i.e. Playwright will still run all tests from [project dependencies](./test-projects.md#dependencies). |
|
||||
| `--grep-invert <grep>` | Only run tests **not** matching this regular expression. The opposite of `--grep`. The filter does not apply to the tests from dependcy projects, i.e. Playwright will still run all tests from [project dependencies](./test-projects.md#dependencies).|
|
||||
| `-g <grep>` or `--grep <grep>` | Only run tests matching this regular expression. For example, this will run `'should add to cart'` when passed `-g "add to cart"`. The regular expression will be tested against the string that consists of the test file name, `test.describe` titles if any, test title and all test tags, separated by spaces, e.g. `my-test.spec.ts my-suite my-test @smoke`. The filter does not apply to the tests from dependency projects, i.e. Playwright will still run all tests from [project dependencies](./test-projects.md#dependencies). |
|
||||
| `--grep-invert <grep>` | Only run tests **not** matching this regular expression. The opposite of `--grep`. The filter does not apply to the tests from dependency projects, i.e. Playwright will still run all tests from [project dependencies](./test-projects.md#dependencies).|
|
||||
| `--headed` | Run tests in headed browsers. Useful for debugging. |
|
||||
| `--ignore-snapshots` | Whether to ignore [snapshots](./test-snapshots.md). Use this when snapshot expectations are known to be different, e.g. running tests on Linux against Windows screenshots. |
|
||||
| `--last-failed` | Only re-run the failures.|
|
||||
|
@ -183,7 +183,7 @@ export const test = baseTest.extend<{}, { dbUserName: string }>({
|
||||
dbUserName: [async ({ }, use) => {
|
||||
// Use workerIndex as a unique identifier for each worker.
|
||||
const userName = `user-${test.info().workerIndex}`;
|
||||
// Inialize user in the database.
|
||||
// Initialize user in the database.
|
||||
await createUserInTestDatabase(userName);
|
||||
await use(userName);
|
||||
// Clean up after the tests are done.
|
||||
|
@ -686,7 +686,7 @@ class FrameSession {
|
||||
return;
|
||||
}
|
||||
if (reason === 'swap') {
|
||||
// This is a local -> remote frame transtion, where
|
||||
// This is a local -> remote frame transition, where
|
||||
// Page.frameDetached arrives before Target.attachedToTarget.
|
||||
// We should keep the frame in the tree, and it will be used for the new target.
|
||||
const frame = this._page._frameManager.frame(frameId);
|
||||
|
@ -349,7 +349,7 @@ export class DispatcherConnection {
|
||||
}
|
||||
}
|
||||
response.error = serializeError(e);
|
||||
// The command handler could have set error in the metada, do not reset it if there was no exception.
|
||||
// The command handler could have set error in the metadata, do not reset it if there was no exception.
|
||||
callMetadata.error = response.error;
|
||||
} finally {
|
||||
callMetadata.endTime = monotonicTime();
|
||||
|
@ -75,7 +75,7 @@ export class JSHandleDispatcher extends Dispatcher<js.JSHandle, channels.JSHandl
|
||||
}
|
||||
|
||||
// Generic channel parser converts guids to JSHandleDispatchers,
|
||||
// and this function takes care of coverting them into underlying JSHandles.
|
||||
// and this function takes care of converting them into underlying JSHandles.
|
||||
export function parseArgument(arg: channels.SerializedArgument): any {
|
||||
return parseSerializedValue(arg.value, arg.handles.map(a => (a as JSHandleDispatcher)._object));
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ export type NavigationEvent = {
|
||||
// Error for cross-document navigations if any. When error is present,
|
||||
// the navigation did not commit.
|
||||
error?: Error,
|
||||
// Wether this event should be visible to the clients via the public APIs.
|
||||
// Whether this event should be visible to the clients via the public APIs.
|
||||
isPublic?: boolean;
|
||||
};
|
||||
|
||||
|
@ -351,7 +351,7 @@ export class HarTracer {
|
||||
});
|
||||
this._addBarrier(page || request.serviceWorker(), promise);
|
||||
|
||||
// Respose end timing is only available after the response event was received.
|
||||
// Response end timing is only available after the response event was received.
|
||||
const timing = response.timing();
|
||||
harEntry.timings.receive = response.request()._responseEndTiming !== -1 ? helper.millisToRoundishMillis(response.request()._responseEndTiming - timing.responseStart) : -1;
|
||||
this._computeHarEntryTotalTime(harEntry);
|
||||
|
@ -625,7 +625,7 @@ function getTextAlternativeInternal(element: Element, options: AccessibleNameOpt
|
||||
if (trimFlatString(title))
|
||||
return title;
|
||||
// SPEC DIFFERENCE.
|
||||
// Spec says return localized "Submit Query", but browsers and axe-core insist on "Sumbit".
|
||||
// Spec says return localized "Submit Query", but browsers and axe-core insist on "Submit".
|
||||
return 'Submit';
|
||||
}
|
||||
|
||||
|
@ -282,7 +282,7 @@ function buildLayoutClosure(layout: keyboardLayout.KeyboardLayout): Map<string,
|
||||
shiftedDescription.keyCode = definition.shiftKeyCode;
|
||||
}
|
||||
|
||||
// Map from code: Digit3 -> { ... descrption, shifted }
|
||||
// Map from code: Digit3 -> { ... description, shifted }
|
||||
result.set(code, { ...description, shifted: shiftedDescription });
|
||||
|
||||
// Map from aliases: Shift -> non-shiftable definition
|
||||
|
16
packages/playwright-core/types/types.d.ts
vendored
16
packages/playwright-core/types/types.d.ts
vendored
@ -4390,7 +4390,7 @@ export interface Page {
|
||||
*/
|
||||
unrouteAll(options?: {
|
||||
/**
|
||||
* Specifies wether to wait for already running handlers and what to do if they throw errors:
|
||||
* Specifies whether to wait for already running handlers and what to do if they throw errors:
|
||||
* - `'default'` - do not wait for current handler calls (if any) to finish, if unrouted handler throws, it may
|
||||
* result in unhandled error
|
||||
* - `'wait'` - wait for current handler calls (if any) to finish
|
||||
@ -8827,7 +8827,7 @@ export interface BrowserContext {
|
||||
*/
|
||||
unrouteAll(options?: {
|
||||
/**
|
||||
* Specifies wether to wait for already running handlers and what to do if they throw errors:
|
||||
* Specifies whether to wait for already running handlers and what to do if they throw errors:
|
||||
* - `'default'` - do not wait for current handler calls (if any) to finish, if unrouted handler throws, it may
|
||||
* result in unhandled error
|
||||
* - `'wait'` - wait for current handler calls (if any) to finish
|
||||
@ -13378,7 +13378,7 @@ export interface BrowserType<Unused = {}> {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
@ -14901,7 +14901,7 @@ export interface AndroidDevice {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
@ -15632,7 +15632,7 @@ export interface APIRequest {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
@ -16783,7 +16783,7 @@ export interface Browser extends EventEmitter {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
@ -17677,7 +17677,7 @@ export interface Electron {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
@ -20344,7 +20344,7 @@ export interface HTTPCredentials {
|
||||
origin?: string;
|
||||
|
||||
/**
|
||||
* Whether to send `Authorization` header with the first API request. By deafult, the credentials are sent only when
|
||||
* Whether to send `Authorization` header with the first API request. By default, the credentials are sent only when
|
||||
* 401 (Unauthorized) response with `WWW-Authenticate` header is received. This option does not affect requests sent
|
||||
* from the browser.
|
||||
*/
|
||||
|
@ -61,7 +61,7 @@ export async function incorporateCompilationCache() {
|
||||
if (!loaderChannel)
|
||||
return;
|
||||
// This is needed to gather dependency information from the esm loader
|
||||
// that is populated from the resovle hook. We do not need to push
|
||||
// that is populated from the resolve hook. We do not need to push
|
||||
// this information proactively during load, but gather it at the end.
|
||||
const result = await loaderChannel.send('getCompilationCache', {});
|
||||
addToCompilationCache(result.cache);
|
||||
|
@ -235,7 +235,7 @@ export function fixtureParameterNames(fn: Function | any, location: Location, on
|
||||
return fn[signatureSymbol];
|
||||
}
|
||||
|
||||
export function inheritFixutreNames(from: Function, to: Function) {
|
||||
export function inheritFixtureNames(from: Function, to: Function) {
|
||||
(to as any)[signatureSymbol] = (from as any)[signatureSymbol];
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ class SnapshotHelper {
|
||||
++snapshotNames.anonymousSnapshotIndex,
|
||||
].join(' ');
|
||||
inputPathSegments = [sanitizeForFilePath(trimLongString(fullTitleWithoutSpec)) + '.' + anonymousSnapshotExtension];
|
||||
// Trim the output file paths more aggresively to avoid hitting Windows filesystem limits.
|
||||
// Trim the output file paths more aggressively to avoid hitting Windows filesystem limits.
|
||||
this.outputBaseName = sanitizeForFilePath(trimLongString(fullTitleWithoutSpec, windowsFilesystemFriendlyLength)) + '.' + anonymousSnapshotExtension;
|
||||
} else {
|
||||
// We intentionally do not sanitize user-provided array of segments, but for backwards
|
||||
|
@ -139,7 +139,7 @@ async function extractAndParseReports(dir: string, shardFiles: string[], interna
|
||||
fileName = reportNames.makeUnique(fileName);
|
||||
let parsedEvents = parseCommonEvents(content);
|
||||
// Passing reviver to JSON.parse doesn't work, as the original strings
|
||||
// keep beeing used. To work around that we traverse the parsed events
|
||||
// keep being used. To work around that we traverse the parsed events
|
||||
// as a post-processing step.
|
||||
internalizer.traverse(parsedEvents);
|
||||
const metadata = findMetadata(parsedEvents, file);
|
||||
|
@ -83,7 +83,7 @@ class Fixture {
|
||||
this.failed = true;
|
||||
return;
|
||||
}
|
||||
// Fixture teardown is root => leafs, when we need to teardown a fixture,
|
||||
// Fixture teardown is root => leaves, when we need to teardown a fixture,
|
||||
// it recursively tears down its usages first.
|
||||
dep._usages.add(this);
|
||||
// Don't forget to decrement all usages when fixture goes.
|
||||
|
@ -30,7 +30,7 @@ import { applyRepeatEachIndex, bindFileSuiteToProject, filterTestsRemoveEmptySui
|
||||
import { PoolBuilder } from '../common/poolBuilder';
|
||||
import type { TestInfoError } from '../../types/test';
|
||||
import type { Location } from '../../types/testReporter';
|
||||
import { inheritFixutreNames } from '../common/fixtures';
|
||||
import { inheritFixtureNames } from '../common/fixtures';
|
||||
import { type TimeSlot, TimeoutManagerError } from './timeoutManager';
|
||||
|
||||
export class WorkerMain extends ProcessRunner {
|
||||
@ -490,7 +490,7 @@ export class WorkerMain extends ProcessRunner {
|
||||
const result = await modifier.fn(fixtures);
|
||||
testInfo[modifier.type](!!result, modifier.description);
|
||||
};
|
||||
inheritFixutreNames(modifier.fn, fn);
|
||||
inheritFixtureNames(modifier.fn, fn);
|
||||
runnables.push({
|
||||
title: `${modifier.type} modifier`,
|
||||
location: modifier.location,
|
||||
|
4
packages/playwright/types/test.d.ts
vendored
4
packages/playwright/types/test.d.ts
vendored
@ -4233,7 +4233,7 @@ export interface TestType<TestArgs extends KeyValue, WorkerArgs extends KeyValue
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* Alternatively, you can delcare a hook **with a title**.
|
||||
* Alternatively, you can declare a hook **with a title**.
|
||||
*
|
||||
* ```js
|
||||
* // example.spec.ts
|
||||
@ -4283,7 +4283,7 @@ export interface TestType<TestArgs extends KeyValue, WorkerArgs extends KeyValue
|
||||
* });
|
||||
* ```
|
||||
*
|
||||
* Alternatively, you can delcare a hook **with a title**.
|
||||
* Alternatively, you can declare a hook **with a title**.
|
||||
*
|
||||
* ```js
|
||||
* // example.spec.ts
|
||||
|
@ -15,7 +15,7 @@ test('emit an submit event when the button is clicked', async ({ mount }) => {
|
||||
expect(messages).toEqual(['hello']);
|
||||
});
|
||||
|
||||
test('emit a falltrough event when the button is double clicked', async ({ mount }) => {
|
||||
test('emit a fallthrough event when the button is double clicked', async ({ mount }) => {
|
||||
const messages: string[] = [];
|
||||
const component = await mount(Button, {
|
||||
props: {
|
||||
|
@ -16,7 +16,7 @@ test('emit an submit event when the button is clicked', async ({ mount }) => {
|
||||
expect(messages).toEqual(['hello']);
|
||||
});
|
||||
|
||||
test('emit a falltrough event when the button is double clicked', async ({ mount }) => {
|
||||
test('emit a fallthrough event when the button is double clicked', async ({ mount }) => {
|
||||
const messages: string[] = [];
|
||||
const component = await mount(
|
||||
<Button
|
||||
|
@ -15,7 +15,7 @@ test('emit a submit event when the button is clicked', async ({ mount }) => {
|
||||
expect(messages).toEqual(['hello']);
|
||||
});
|
||||
|
||||
test('emit a falltrough event when the button is double clicked', async ({ mount }) => {
|
||||
test('emit a fallthrough event when the button is double clicked', async ({ mount }) => {
|
||||
const messages = [];
|
||||
const component = await mount(Button, {
|
||||
props: {
|
||||
|
@ -15,7 +15,7 @@ test('emit a submit event when the button is clicked', async ({ mount }) => {
|
||||
expect(messages).toEqual(['hello']);
|
||||
});
|
||||
|
||||
test('emit a falltrough event when the button is double clicked', async ({ mount }) => {
|
||||
test('emit a fallthrough event when the button is double clicked', async ({ mount }) => {
|
||||
const messages: string[] = [];
|
||||
const component = await mount(Button, {
|
||||
props: {
|
||||
|
@ -16,7 +16,7 @@ test('emit a submit event when the button is clicked', async ({ mount }) => {
|
||||
expect(messages).toEqual(['hello']);
|
||||
});
|
||||
|
||||
test('emit a falltrough event when the button is double clicked', async ({ mount }) => {
|
||||
test('emit a fallthrough event when the button is double clicked', async ({ mount }) => {
|
||||
const messages: string[] = [];
|
||||
const component = await mount(
|
||||
<Button
|
||||
|
@ -26,7 +26,7 @@ import ws from 'ws';
|
||||
import zlib, { gzip } from 'zlib';
|
||||
import { createHttpServer, createHttpsServer } from '../../../packages/playwright-core/lib/utils/network';
|
||||
|
||||
const fulfillSymbol = Symbol('fullfil callback');
|
||||
const fulfillSymbol = Symbol('fulfil callback');
|
||||
const rejectSymbol = Symbol('reject callback');
|
||||
|
||||
const gzipAsync = util.promisify(gzip.bind(zlib));
|
||||
@ -288,8 +288,8 @@ export class TestServer {
|
||||
}
|
||||
|
||||
waitForWebSocketConnectionRequest() {
|
||||
return new Promise<http.IncomingMessage & { headers: http.IncomingHttpHeaders }>(fullfil => {
|
||||
this._wsServer.once('connection', (ws, req) => fullfil(req));
|
||||
return new Promise<http.IncomingMessage & { headers: http.IncomingHttpHeaders }>(fulfil => {
|
||||
this._wsServer.once('connection', (ws, req) => fulfil(req));
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ const fs = require('fs');
|
||||
recordVideo: { dir: __dirname, size: {width: 320, height: 240} },
|
||||
});
|
||||
await context.newPage();
|
||||
// Wait fo 1 second to actually record something.
|
||||
// Wait for 1 second to actually record something.
|
||||
await new Promise(x => setTimeout(x, 1000));
|
||||
await context.close();
|
||||
await browser.close();
|
||||
|
@ -363,7 +363,7 @@ it('should detect overlay from another shadow root', async ({ page, server }) =>
|
||||
expect(error.message).toContain(`<div id="container2"></div> intercepts pointer events`);
|
||||
});
|
||||
|
||||
it('should detect overlayed element in a transformed iframe', async ({ page }) => {
|
||||
it('should detect overlaid element in a transformed iframe', async ({ page }) => {
|
||||
await page.setContent(`
|
||||
<style>
|
||||
body, html, iframe { margin: 0; padding: 0; border: none; }
|
||||
|
@ -462,7 +462,7 @@ await page1.GotoAsync("about:blank?foo");`);
|
||||
expect(models.active).toBe('#checkbox');
|
||||
});
|
||||
|
||||
test('should check input with chaning id', async ({ page, openRecorder }) => {
|
||||
test('should check input with chaining id', async ({ page, openRecorder }) => {
|
||||
const recorder = await openRecorder();
|
||||
await recorder.setContentAndWait(`<input id="checkbox" type="checkbox" name="accept" onchange="checkbox.name = 'updated'"></input>`);
|
||||
await Promise.all([
|
||||
|
@ -218,7 +218,7 @@ it('should support locator.or', async ({ page }) => {
|
||||
await expect(page.locator('div').or(page.locator('span'))).toHaveCount(2);
|
||||
await expect(page.locator('div').or(page.locator('span'))).toHaveText(['hello', 'world']);
|
||||
await expect(page.locator('span').or(page.locator('article')).or(page.locator('div'))).toHaveText(['hello', 'world']);
|
||||
await expect(page.locator('article').or(page.locator('someting'))).toHaveCount(0);
|
||||
await expect(page.locator('article').or(page.locator('something'))).toHaveCount(0);
|
||||
await expect(page.locator('article').or(page.locator('div'))).toHaveText('hello');
|
||||
await expect(page.locator('article').or(page.locator('span'))).toHaveText('world');
|
||||
await expect(page.locator('div').or(page.locator('article'))).toHaveText('hello');
|
||||
|
@ -981,7 +981,7 @@ it('should click in a transformed iframe', async ({ page }) => {
|
||||
expect(await page.evaluate('window._clicked')).toBe(true);
|
||||
});
|
||||
|
||||
it('should click a button that is overlayed by a permission popup', async ({ page, server }) => {
|
||||
it('should click a button that is overlaid by a permission popup', async ({ page, server }) => {
|
||||
it.info().annotations.push({ type: 'issue', description: 'https://github.com/microsoft/playwright/issues/23280' });
|
||||
await page.setViewportSize({ width: 500, height: 500 });
|
||||
await page.goto(server.EMPTY_PAGE);
|
||||
|
@ -84,7 +84,7 @@ it('should traverse only form elements', async function({ page, browserName, pla
|
||||
|
||||
await page.setContent(`
|
||||
<input id="input-1">
|
||||
<button id="button">buttton</button>
|
||||
<button id="button">button</button>
|
||||
<a href id="link">link</a>
|
||||
<input id="input-2">
|
||||
`);
|
||||
|
@ -596,7 +596,7 @@ it('should not fulfill with redirect status', async ({ page, server, browserName
|
||||
'location': '/empty.html',
|
||||
}
|
||||
});
|
||||
reject('fullfill didn\'t throw');
|
||||
reject('fulfill didn\'t throw');
|
||||
} catch (e) {
|
||||
fulfill(e);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ test('should clear cache with type:module', async ({ runCLICommand }) => {
|
||||
import { defineConfig } from '@playwright/test';
|
||||
export default defineConfig({});
|
||||
`,
|
||||
'pacakge.json': `
|
||||
'package.json': `
|
||||
{ "type": "module" }
|
||||
`,
|
||||
'a.spec.ts': `
|
||||
|
@ -881,7 +881,7 @@ test('should chain expect matchers and expose matcher utils', async ({ runInline
|
||||
expect(result.exitCode).toBe(1);
|
||||
});
|
||||
|
||||
test('should suppport toHaveAttribute without optional value', async ({ runTSC }) => {
|
||||
test('should support toHaveAttribute without optional value', async ({ runTSC }) => {
|
||||
const result = await runTSC({
|
||||
'a.spec.ts': `
|
||||
import { test, expect as baseExpect } from '@playwright/test';
|
||||
@ -925,7 +925,7 @@ test('should support mergeExpects (TSC)', async ({ runTSC }) => {
|
||||
await expect(page).toBeAGoodPage(123);
|
||||
await expect(page).toBeABadPage('123');
|
||||
// @ts-expect-error
|
||||
await expect(page).toBeAMedicorePage();
|
||||
await expect(page).toBeAMediocrePage();
|
||||
// @ts-expect-error
|
||||
await expect(page).toBeABadPage(123);
|
||||
// @ts-expect-error
|
||||
|
@ -641,11 +641,11 @@ test('generate html with attachment urls', async ({ runInlineTest, mergeReports,
|
||||
for (const entry of await fs.promises.readdir(htmlReportDir))
|
||||
await fs.promises.cp(path.join(htmlReportDir, entry), path.join(reportDir, entry), { recursive: true });
|
||||
|
||||
const oldSeveFile = server.serveFile;
|
||||
const oldServeFile = server.serveFile;
|
||||
server.serveFile = async (req, res) => {
|
||||
const pathName = url.parse(req.url!).pathname!;
|
||||
const filePath = path.join(reportDir, pathName.substring(1));
|
||||
return oldSeveFile.call(server, req, res, filePath);
|
||||
return oldServeFile.call(server, req, res, filePath);
|
||||
};
|
||||
|
||||
await page.goto(`${server.PREFIX}/index.html`);
|
||||
|
@ -162,7 +162,7 @@ test('should be included in testInfo', async ({ runInlineTest }, testInfo) => {
|
||||
expect(result.exitCode).toBe(0);
|
||||
});
|
||||
|
||||
test('should be included in testInfo if comming from describe', async ({ runInlineTest }, testInfo) => {
|
||||
test('should be included in testInfo if coming from describe', async ({ runInlineTest }, testInfo) => {
|
||||
const result = await runInlineTest({
|
||||
'a.test.ts': `
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
4
tests/third_party/proxy/index.ts
vendored
4
tests/third_party/proxy/index.ts
vendored
@ -92,7 +92,7 @@ async function onrequest(
|
||||
if (!success) return requestAuthorization(req, res);
|
||||
} catch (_err: unknown) {
|
||||
const err = _err as Error;
|
||||
// an error occured during login!
|
||||
// an error occurred during login!
|
||||
res.writeHead(500);
|
||||
res.end((err.stack || err.message || err) + '\n');
|
||||
return;
|
||||
@ -403,7 +403,7 @@ async function onconnect(
|
||||
if (!success) return requestAuthorization(req, res);
|
||||
} catch (_err) {
|
||||
const err = _err as Error;
|
||||
// an error occured during login!
|
||||
// an error occurred during login!
|
||||
res.writeHead(500);
|
||||
res.end((err.stack || err.message || err) + '\n');
|
||||
return;
|
||||
|
@ -184,12 +184,12 @@ class TypesGenerator {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} overriddes
|
||||
* @param {string} overrides
|
||||
*/
|
||||
objectDefinitionsToString(overriddes) {
|
||||
objectDefinitionsToString(overrides) {
|
||||
let definition;
|
||||
const parts = [];
|
||||
const internalWords = new Set(overriddes.split(/[^\w$]/g));
|
||||
const internalWords = new Set(overrides.split(/[^\w$]/g));
|
||||
while ((definition = this.objectDefinitions.pop())) {
|
||||
const { name, properties } = definition;
|
||||
const shouldExport = !!exported[name];
|
||||
|
@ -321,13 +321,13 @@ playwright.chromium.launch().then(async browser => {
|
||||
console.log(await resultHandle.jsonValue());
|
||||
await resultHandle.dispose();
|
||||
|
||||
// evaluteHandle with two different return types (JSHandle)
|
||||
// evaluateHandle with two different return types (JSHandle)
|
||||
{
|
||||
const handle = await page.evaluateHandle(() => '' as string | number);
|
||||
const result = await handle.evaluate(value => value);
|
||||
const assertion: AssertType<string | number, typeof result> = true;
|
||||
}
|
||||
// evaluteHandle with two different return types (ElementHandle)
|
||||
// evaluateHandle with two different return types (ElementHandle)
|
||||
{
|
||||
const handle = await page.evaluateHandle(() => '' as any as HTMLInputElement | HTMLTextAreaElement);
|
||||
await handle.evaluate(element => element.value);
|
||||
|
Loading…
Reference in New Issue
Block a user