Commit Graph

1885 Commits

Author SHA1 Message Date
Pavel Feldman
c25e67a0e7
chore: conditionally dispatch network events (#18687) 2022-11-09 21:10:57 -08:00
Dmitry Gozman
cafa558845
fix(codegen): update priorites in selector generator (#18688)
- prefer `role=checkbox` over `input[type=checkbox]`
- prefer `#id` over `input[type=checkbox]` and `role=checkbox`
- prefer `text=foo` over `internal:has-text=foo`
- ignore `none` and `presentation` roles
- remove non-strict support
2022-11-09 17:22:13 -08:00
Andrey Lushnikov
6d491f928d
feat(playwright-test): introduce snapshotPathTemplate configuration (#18568)
This configuration option allows to set a string with template
values for precise control over snapshot path location.

An example of `snapshotPathTemplate` usage:

```ts
// playwright.config.ts
// Notice the `testDir` configuration!
export default {
  testDir: './tests',
  snapshotPathTemplate: './__screenshots__/{platform}/{projectName}/{testFilePath}/{arg}{ext}',
}
```

Currently supported "magic tokens" inside the `snapshotPathTemplate`
are:

- `{testDir}` - project's `testDir`
- `{snapshotDir}` - project's `snapshotDir`
- `{platform}` - `process.platform`
- `{projectName}` - Project's sanitized name
- `{testFileDir}` - Directories in relative path from `testDir` to test
  file path (e.g. `page/` in the example below)
- `{testFileName}` - Test file name (with extension) (e.g.
  `page-click.spec.ts` in the example below)
- `{testFilePath}` - Relative path from `testDir` to test file path
  (e.g. `page/page-click.spec.ts` in the example below)
- `{ext}` - snapshot extension (with dots)
- `{arg}` - joined snapshot name parts, without extension (e.g.
`foo/bar/baz` in the example below)
- `{snapshotSuffix}` - `testInfo.snapshotSuffix` value.

Consider the following file structure:

```
playwright.config.ts
tests/
└── page/
    └── page-click.spec.ts
```

The following `page-click.spec.ts`:

```ts
// page-click.spec.ts
import { test, expect } from '@playwright/test';

test('should work', async ({ page }) => {
  await expect(page).toHaveScreenshot(['foo', 'bar', 'baz.png']);
});
```

Fixes #7792
2022-11-09 15:29:07 -08:00
Andrey Lushnikov
9bcb28f25a
Revert "feat: send SIGTERM to webserver before SIGKILL'ing it. (#18220)" (#18661)
This reverts commit c63a0b536d.

Reason: https://github.com/microsoft/playwright/pull/18564
2022-11-09 09:18:33 -08:00
Dmitry Gozman
a7f1c8cb65
fix(codegen): fix csharp options syntax (#18662) 2022-11-08 21:48:01 -08:00
Dmitry Gozman
ef1b68a998
feat(locators): support frame locators in asLocator (#18653)
Drive-by: change `true` to `True` in python.

References #18524.
2022-11-08 17:08:08 -08:00
Pavel Feldman
0355d8618f
chore: use provided value for the generated test id (#18631) 2022-11-08 12:04:43 -08:00
Dmitry Gozman
05b623e6b0
feat(locators): asLocator supports internal:has= (#18625)
The following snippet:
```js
rowLocator
    .filter({ hasText: 'John' })
    .filter({ has: page.getByRole('button', { name: 'Say hello' }) })

```

is shown in the logs:

```log
pw:api waiting for getByRole('listitem').filter({ hasText: 'John' }).filter({ has: getByRole('button', { name: 'Say hello' }) })
```
2022-11-08 08:47:02 -08:00
sand4rt
712ce0dce9
test(ct): vue cli router (#18603) 2022-11-08 08:40:29 -08:00
sand4rt
ccf9c8d487
test(ct): react router (#18602) 2022-11-08 08:40:06 -08:00
sand4rt
84529595cc
test(ct): react vite router (#18601) 2022-11-08 08:39:48 -08:00
Yury Semikhatsky
d5494edf71
feat(runner): TestOptions.storageStateName (#18587) 2022-11-07 16:27:38 -08:00
Dmitry Gozman
28d3f48a65
test: gardening (#18623)
- Separate worker for some Android tests.
- Use png comparator for some screenshots tests instead of buffer
equality.
- Skip drag&drop tests on Android.
- Various timeout fixes.
2022-11-07 15:35:21 -08:00
Dmitry Gozman
9172a2ca5a
test: use strict png comparator in tests (#18622) 2022-11-07 13:32:46 -08:00
Dmitry Gozman
6a65a43e9a
chore: use consistent asLocator() in all logs (#18586)
References #18524.
2022-11-04 15:19:16 -07:00
Yury Semikhatsky
25dc0bfacb
feat(runner): change storage fixture to TestInfo.storage() (#18584) 2022-11-04 14:28:25 -07:00
Yury Semikhatsky
a9c15a25f8
test: storageState from config key (#18581) 2022-11-04 13:10:33 -07:00
Dmitry Gozman
3a24e88e61
test: enable "should not crash when force-clicking hidden input" on chromium (#18576)
Fixed by the latest roll.
2022-11-04 10:39:51 -07:00
Dmitry Gozman
6fef227f43
feat(test runner): test.reset() to reset options to default/config value (#18561) 2022-11-04 09:03:29 -07:00
Dmitry Gozman
227f47effb
feat(firefox): roll to 1364 and 1367, rebase page-drag.spec (#18559) 2022-11-04 08:53:50 -07:00
Pavel Feldman
3bc9e07daf
chore: parse locators strictly (#18553) 2022-11-03 15:17:08 -07:00
Yury Semikhatsky
c8cd07594c
feat(runner): initialize context.storageState from storage entry (#18549) 2022-11-03 14:20:39 -07:00
Xiaoxing Ye
9338355e47
feat(testinfo): add name to attachment output name (#18440)
Per discussion in #12950, adding sanitized name to the output filename
prefix. This can make debugging easier, and the filename structure more
human friendly.
2022-11-03 13:54:51 -07:00
Andrey Lushnikov
8538f61a72
feat(containers): implement global network tethering for playwright server (#17719)
This patch implements a new mode of network tethering for Playwright
server & its clients.
With this patch:
- playwright server could be launched with the
`--browser-proxy-mode=tether` flag to engage in the new mode
- a new type of client, "Network Tethering Client" can connect to the
server to provide network traffic to the browsers
- all clients that connect to the server with the `x-playwright-proxy:
*` header will get traffic from the "Network Tethering Client"

This patch also adds an environment variable
`PW_OWNED_BY_TETHER_CLIENT`. With this env, playwright server will
auto-close when the network tethering client disconnects. It will also
auto-close if the network client does not connect to the server in the
first 10 seconds of the server existence. This way we can ensure that
`npx playwright docker start` blocks terminal & controls the lifetime of
the started container.
2022-11-03 13:47:51 -07:00
Pavel Feldman
17c8554255
chore(recorder): explore using codemirror (#18529) 2022-11-03 09:55:23 -07:00
Yury Semikhatsky
45aa82242d
feat(runner): storage fixture (#18522) 2022-11-02 20:22:35 -07:00
Dmitry Gozman
20f2e0049c
test: unflake codegen tests waiting for highlight (#18518)
Clear existing highlights to avoid resolving with the old highlight
value.
2022-11-02 17:00:33 -07:00
Yury Semikhatsky
1d2fc1e963
feat(runner): project.setup (#18486) 2022-11-01 23:44:30 -07:00
Pavel Feldman
67c9624924
chore: send structured codegen info to the debug controller (#18491) 2022-11-01 18:02:14 -07:00
Pavel Feldman
2183d9e9a2
chore: use codemirror for editor (#18482) 2022-11-01 15:04:30 -07:00
sand4rt
4896b22616
chore(ct): bump vue to v2.7.13 (#18428) 2022-11-01 14:17:43 -07:00
Max Schmitt
57c2ed91d9
chore: fix language binding based install message (#18480) 2022-11-01 13:46:17 -07:00
Yury Semikhatsky
7337dd4e28
chore: revert project.{stage,run} (#18462) 2022-10-31 14:04:24 -07:00
sand4rt
fbfec18678
fix(ct): vite base url (#17767) 2022-10-31 12:58:07 -07:00
Pavel Feldman
2c3fa1b1ff
chore: add explore locator parser (#18429) 2022-10-31 12:55:35 -07:00
Playwright Service
2d07c10888
feat(webkit): roll to r1735 (#18419) 2022-10-31 12:54:12 -07:00
Dmitry Gozman
e725293586
test: print stdout/stderr in signals.spec (#18456) 2022-10-31 12:45:18 -07:00
Pavel Feldman
a7f5f2d7a1
chore: allow not overriding media when creating context (#18413) 2022-10-31 09:09:52 -07:00
sand4rt
fabe42dc28
chore(ct): bump vite to v3.2.1 (#18427) 2022-10-31 08:58:11 -07:00
sand4rt
afca134c9f
feat(ct): vue3 ts api component as slot (#18425) 2022-10-31 08:57:21 -07:00
sand4rt
01d0ff7316
core(ct): rename tests from rerender to update (#18374) 2022-10-31 08:55:29 -07:00
Dmitry Gozman
e37757b44b
test: unflake some wheel tests (#18412) 2022-10-28 13:35:09 -07:00
Dmitry Gozman
90cf2b87b4
test: clicking hidden input should not crash/timeout (#18410)
References #18183.
2022-10-28 11:13:24 -07:00
Dmitry Gozman
2d3b2a0768
feat(test runner): test.describe.configure({ retries, timeout }) (#18388)
References #10825.
2022-10-27 15:53:27 -07:00
Pavel Feldman
3e112193a6
test: fix debug controller tests on firefox (#18361) 2022-10-27 09:19:55 -07:00
Yury Semikhatsky
12fdd3336e
test: navigator.storage.getDirectory() across browsers (#18305) 2022-10-26 15:41:36 -07:00
Pavel Feldman
db456a020c
chore: do not point to node_modules in code frames (#18358)
Fixes https://github.com/microsoft/playwright/issues/18330
2022-10-26 15:18:31 -07:00
Pavel Feldman
1505a952fe
chore: make handle beforeunload when reusing the context (#18357)
Fixes: https://github.com/microsoft/playwright/issues/17903
2022-10-26 15:17:40 -07:00
Max Schmitt
e25537f941
feat(android): add AndroidDevice.close event (#18306) 2022-10-25 18:18:14 -07:00
Max Schmitt
ffc47271f2
fix(junit): escape null control character (#18325)
Fixes https://github.com/microsoft/playwright/issues/18322
2022-10-25 14:39:16 -07:00