Highlights
- [Selecting elements based on layout](https://playwright.dev/docs/selectors#selecting-elements-based-on-layout) with `:left-of()`, `:right-of()`, `:above()` and `:below()`
- Playwright now includes [command line interface](https://playwright.dev/docs/cli), former playwright-cli. Give it a try with npx playwright --help
- [Documentation site](https://playwright.dev/docs/intro) now has a lot more content, and a dedicated [python section](https://playwright.dev/python/docs/intro)
- [`selectOption(selector, values[, options])`](https://playwright.dev/docs/api/class-page/#pageselectoptionselector-values-options) now waits for the options to be present
- New methods to [assert element state](https://playwright.dev/docs/actionability#assertions) like `page.isEditable('selector')`
Browser Versions
- Chromium 90.0.4392.0
- Mozilla Firefox 85.0b5
- WebKit 14.1
New APIs
- [`elementHandle.isChecked()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleischecked)
- [`elementHandle.isDisabled()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleisdisabled)
- [`elementHandle.isEditable()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleiseditable)
- [`elementHandle.isEnabled()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleisenabled)
- [`elementHandle.isHidden()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleishidden)
- [`elementHandle.isVisible()`](https://playwright.dev/docs/api/class-elementhandle#elementhandleisvisible)
- [`page.isChecked(selector[, options])`](https://playwright.dev/docs/api/class-page#pageischeckedselector-options)
- [`page.isDisabled(selector[, options])`](https://playwright.dev/docs/api/class-page#pageisdisabledselector-options)
- [`page.isEditable(selector[, options])`](https://playwright.dev/docs/api/class-page#pageiseditableselector-options)
- [`page.isEnabled(selector[, options])`](https://playwright.dev/docs/api/class-page#pageisenabledselector-options)
- [`page.isHidden(selector[, options])`](https://playwright.dev/docs/api/class-page#pageishiddenselector-options)
- [`page.isVisible(selector[, options])`](https://playwright.dev/docs/api/class-page#pageisvisibleselector-options)
- New option `'editable'` in [`elementHandle.waitForElementState(state[, options])`](https://playwright.dev/docs/api/class-elementhandle#elementhandlewaitforelementstatestate-options)
<details>
<summary><b>Issues Closed (41)</b></summary>
2816 - [Feature] Performance measurement
2877 - [Feature] A special locator to visually locate an element
4552 - I would like browser logs when my test fails for my failing test
4424 - [Docs] Clarify distinction between `logger` option and console logs
4511 - [REGRESSION]: Memory leak related to route interception
4549 - playwright.helper.Error: Navigation failed because page crashed!
4562 - [BUG] Annotate deprecated API methods and properties as such in TS types
4584 - [BUG] proxies are flaky on webkit + big sur + m1
4684 - page.url() not getting current url immediately
4737 - [BUG] page.waitForEvent('dialog') is not working
4738 - [Question] Running playwright from inside browser.
4748 - [Internal] Make server error messages consistent and language-agnostic
4764 - [BUG] [PW 1.7.0] [WebKit] page.waitForSelector: Protocol error (Runtime.evaluate): The page has been closed.
4774 - [REGRESSION] Custom selectors no longer able to be last in group
4775 - [Feature] Playwright does not support chromium on mac11.1
4782 - [Question] Wait for image loaded.
4788 - [Question]UnhandledPromiseRejectionWarning EVERYTIME
4789 - [BUG] Firefox does not isolate proxy credentials between contexts
4799 - [Docs] Broken links on "Running Playwright in Docker" page
4800 - [BUG] - FileNotFoundError: [Errno 2] No such file or directory:python3.9/site-packages/playwright/driver/playwright-cli'
4804 - [BUG] waitForSelector doesn't throw
4805 - [BUG] waitForSelector timeout doesn't apply
4806 - [Question] Intermittent waitForResponse timeouts when looping
4808 - [Question] Access browser binaries from node_modules/playwright directory?
4811 - [BUG]Screenshot quality parameter setting error
4813 - [BUG] Missing dependencies in Docker image to play video in Webkit.
4814 - [Question] How does Playwright handle a big list of pages?
4816 - [Feature] element.isVisible/isClickable/etc
4818 - [Question] Docs page color is wierd in night mode chrome
4820 - [BUG] No usable sandbox!
4822 - [Question] How to disable bringing page to front during launching.
4823 - [Question] Where can I find default args used by playwright?
4824 - [Feature] Perform actionability checks manually
4833 - [BUG] `request.postData()` output is distorted on webkit
4847 - [Question] Cannot launch chrome again after close the previous one
4849 - [Question] page.click() and CSS extension: visible - documentation confusion
4853 - [Question]How to get the text of an element?
4856 - [BUG] Possible click element logic issue in combination with detach
4862 - [Question] How does Playwright communicate with browsers?
4863 - [Question]Please give an example of Sync dialog, thank you
4865 - [BUG] Issue with chained selectors -- text selector doesn't work
</details>
<details>
<summary><b>Commits (193)</b></summary>
f10f1709 - docs: add file chooser example, remove links to js samples (5054)
449bcdcb - browser(webkit): roll to 01-19 (5064)
263f1642 - feat(trace viewer): improve source tab (5038)
c567f948 - chore: mark tot as 1.9.0-next (5059)
d00c5cfd - feat(webkit): bump to 1423 (5057)
615954b2 - fix(dom): make selectOption wait for options (5036)
19acf998 - docs: minor updates to selectors.md (5055)
0586c255 - feat(text selector): normalize whitespace for quoted match (5049)
9e3bd786 - docs: update selectors doc to be more like a guide (5048)
9caa8e80 - test: add test for multiple arguments in :has() (5047)
01fb3a60 - docs: extract handles, screenshots, videos docs (5045)
0a7b917e - feat(chromium): bump to 844399 (5044)
d05c0917 - chore: roll chromium to 844399 (5043)
17e953c2 - chore: make generate_types not depend on the source (5040)
1fc02e88 - docs: add dialogs and downloads docs (5042)
2db02c9a - docs(python): update installation docs (5039)
fdfea2b7 - browser(webkit): add another missing include to fix mac after roll to 01-15 (5037)
afaec552 - feat(trace): show dialogs, navigations and misc events (5025)
e67d5637 - docs: don't use lang suffix in the intro url (5035)
41e394bc - docs: allow overriding return types (5031)
940cf35d - browser(webkit): add missing include on mac after roll to 01-15 (5033)
0ab6a532 - browser(webkit): roll to 01-15 (5032)
6e94c110 - docs: prepare docs for tabbed snippets (5026)
56ba0b3c - docs: brush up some python docs (5027)
b45905ae - feat(trace viewer): small improvements (5007)
7701176b - docs: allow lang-specific sh snippets (5024)
de5d671d - chore: restore lockfile v1 (5023)
19b58d47 - chore: bump chromium to r843427 (5022)
e85f2788 - docs: more python docs and snippets (5021)
61b0dbb3 - devops: start downloading firefox arm builds on Apple Silicon. (5019)
5dcb7bb2 - docs: declare expect_navigation as returning Response (5020)
ff20b9d1 - devops: support frequent minor releases of MacOS BigSur. (5016)
1648d235 - docs: add python snippets for api classes (follow up) (5018)
3ed9f2d6 - chore: disable v1 flakiness dashboard (5015)
38dac2f3 - chore: bump electron version to 11 (4968)
8354a91d - docs: add python snippets for api classes (5011)
5408e26e - docs: add python snippets for class Page (5010)
0a999bf0 - fix(driver): remove path trickery from install command (5008)
e3ebba55 - chore: cleanup code that is not used by cli anymore (5005)
7ff86a84 - chore: add publish-driver-release workflow (5006)
5c3f4836 - fix(cli): do not extend injected script on same-document navigations (5002)
a35617db - chore: bundle proper license file for ffmpeg (5004)
9a9ac60d - fix: fix the cli tests, generate snake python (5003)
decf373c - fix(electron): return a ChromiumBrowserContext for electron (4913)
df53cb2f - docs: fix inline code quoting (4992)
fcbfbe6f - devops: fix azure function bugs (4998)
8316dee4 - devops(flakiness): persist all test reports, aggregated per commit sha (4991)
29c34325 - fix(cookies): make filtering by url work with subdomains (4989)
0bf7477c - test(network): add failing test for Set-Cookie in fulfill (4988)
cac119f3 - docs: python api review (4986)
3d258631 - feat(webkit): bump to 1420 (4980)
d62b661c - docs: rename proximity selectors to position selectors (4975)
cb6e4a66 - chore: update snippets in python docs (4976)
7665a6ec - devops: support apple silicon builds of Firefox (4979)
72519196 - fix(connect): provide an error message when ws endpoint is incorrect (4978)
068ad0f0 - feat(firefox): roll Firefox to r1225 (4908)
728846b3 - fix(launcher): add vcruntime140_1.dll to the list of known deps (4973)
36650b1e - browser(webkit): fix compile on mac (4977)
bf64fedd - fix(trace viewer): updating default traceStorageDir value (4962)
56f01204 - browser(webkit): fix mac compilation after roll to 01-11 (4972)
62c52e86 - browser(webkit): roll to 01-11 (4971)
5854cadd - browser(webkit): fix typo in macro name (4970)
7a8214cd - chore: prepare non-api docs for non-js variants (4969)
4dbbb475 - docs: document Python's expect_event methods (4963)
e67d8974 - chore: update docs to cover python specifics (4960)
e990a805 - fix: restore network request title in trace viewer. (4957)
5a2cfdbd - api: add isChecked method (4953)
3b617b37 - docs: validate member links (4955)
b7e0b1b3 - docs: annotate evaluate(pageFunction) js-specific (4954)
31d980fc - chore(webpack): minify injected sources (4946)
135e0344 - feat(cli): small improvements (4952)
114d586f - chore: add python aliases (4949)
f0a87291 - chore: remove unused selector engines (4950)
3f904056 - api: add isVisible, isHidden, isEnabled, isDisabled and isEditable (4915)
498f9a52 - docs: update authentication guide to use storageState() api (4948)
d08cbc33 - docs: brush up selector docs (4939)
97de9209 - docs: move links into playwright.dev (4947)
77bfcd2c - chore: add some Python language snippets (4933)
07cb5f71 - docs: Added Crystal port to showcase (4945)
2072c614 - docs: add Java to the list of language ports (4940)
15c0a295 - docs: split nodejs and python links (4942)
2e05feac - feat(cli): bring in trace viewer (4920)
54c06a1b - chore: mark methods as js-only, add python-specific methods (4938)
e56832b6 - chore: language-specific members api (4936)
8d649949 - docs: move Go port to showcase (4934)
eb9ea205 - feat(selectors): proximity selectors (4923)
ffa169ba - chore: use chokidar for build (4932)
bdf12e32 - docs: split api-body into classes (4931)
4cd989c6 - docs: introduce deprecation annotation and any type (4930)
913f8524 - docs: make all links relative (4926)
0a2fe62c - fix(extensions): do not enable screencast for background pages (4919)
8fd34c6b - feat(webkit): bump to 1415 (4914)
4ff7e1a4 - chore: cleanup our build system (4903)
2311c282 - docs: pref docs to be language-specific (4916)
cc1a79ec - browser(webkit): drag and drop on windows (4889)
f672033e - chore: bundle small build of highlight.js (4907)
6b3dcb01 - chore: fix randomly crashing build-playwright-driver.sh (4909)
9bbabaaa - test: update screencast test to actually require red color (4745)
b6cd385a - docs: mark some paths as such (4896)
2908568f - browser(webkit): install new dependency required for openxr on linux (4906)
6b94f5f1 - browser(firefox): roll Firefox to beta Jan 5, 2021 (4904)
a9c776f5 - chore: watch to regenerate api.json (4901)
d47fb6a7 - feat(cli): build driver and upload to cdn (4841)
b00559bd - docs: add save/load storage to cli docs (4899)
35ecf69d - chore: fix lint (4898)
5df1c6e5 - browser(webkit): roll to 01-05 to pick up upstream Win fix (4894)
0f8d7ec0 - docs: improve waitForElementState documentation (4883)
d8187bb5 - feat(webkit): bump to 1412 (4886)
4996eacd - docs: split numbers into integers and floats (4887)
849a5b37 - browser(webkit): roll to 01-04 (4882)
4a891582 - fix(type-generator): make the generated by message consistent on windows (4888)
80f8a0fd - doc: further align docs w/ playwright.dev (3) (4884)
5215add6 - chore: remove selectorsV2Enabled switch (4880)
c4df5225 - fix(handles): always create proper handle type (4879)
31ffeb32 - doc: further align docs w/ playwright.dev (2) (4871)
3ff81fe1 - browser(webkit): do run win build again if first attempt failed (4881)
706c1e44 - chore: use last commit timestamp for next builds (4876)
b0b1561c - browser(webkit): kick off next build (4878)
736ef4e8 - browser(webkit): call build.sh twice on Windows (4875)
ae935a43 - doc: further align docs w/ playwright.dev (4866)
e0e836cb - doc: split classes into files (4864)
ba291372 - docs: generate all docs off docs-src (4858)
75198f04 - browser(chromium): bump to r839741 (4857)
a5bd415e - doc: generate class toc as a part of the api generation (4852)
ded2bc23 - browser(webkit): postpone creation of the first page (4769)
9817d109 - doc: generator code health (3) (4850)
6697dadc - chore(eslint): add rule no-unused-expressions (4848)
d08f8487 - chore: remove useless statement that was a typo (4846)
722db85e - doc: generator code health (2) (4843)
8fbb984f - test: disable most codegen on headful firefox (4839)
7f8717f1 - feat(cli): add docs (4837)
70c14e6b - doc: generator code health (4840)
a1232b69 - chore: simplify and remove some scripts (4838)
068d8612 - feat(cli): make run-driver work (4836)
293a7bdd - feat(cli): bring in codegen and tests (4815)
4c11f5d8 - test: remove hacky requires, use imports instead (4835)
94077e0e - chore: remove JS types checker, rely on typescript (4831)
a446792c - docs: generate api.md off documentation model (4832)
fee7dd7c - chore: nit type validator fix (4830)
905f28c3 - feat(types): simplify android and electron types (4829)
34c1b338 - feat(types): make our client classes implement public types (4817)
dc25173a - chore(docs): fix crlf (4828)
2cb57701 - docs: move playwright module into api-body.md (4827)
15cdfd1c - chore: generate types, api.json off md rather than html (4825)
9dd982c5 - chore: commit generated types to the repository (4826)
277d255f - chore: brush up md processing (4819)
225e65e0 - feat(cli): share console api between cli and debug mode (4807)
f709e230 - feat(cli): bring selector generator into playwright (4795)
8d4c46ac - fix: throw if quality=0 is passed for png screenshot (4812)
e7ee4262 - yury comments (4639)
eb50baff - browser(firefox): bump to 1224 (4809)
d40afa2f - feat(cli): first few cli commands (4773)
cc32217e - chore: fix check-deps (4801)
a7f4c69a - docs: fix browser version generation script (4797)
ff2a1f1b - fix(webkit): properly detect arm64 on apple silicon (4783)
73edf13a - browser(webkit): roll to 12-21 (4794)
afaf13a0 - docs: add missing GEN:webkit-version (4770)
b3e78385 - browser(firefox): clear AuthCache when setting context proxy (4793)
3eef2548 - test: failing test for firefox per-context proxy credentials (4790)
779c5fff - chore(installer): remove stale backlinks silently (4786)
7bbda437 - chore: improve error reporting when browse download fails (4787)
94ee48f8 - fix: allow proxy credentials with empty password (4779)
ee417791 - chore: roll FFMPEG to r1004 (4760)
fc30c29a - test: add a test for custom engine that does not respect root (4777)
2e220df7 - docs: explicitly annotate methods and parameters (4771)
c81ec9cc - test: fixed failing test on video bot (4747)
d498b450 - docs: remove mentions of nodejs, promises and resolves (4768)
761bd788 - browser(firefox): fix build on MacOS (4758)
b56dd7de - devops: kick ffmpeg build (4757)
774eb539 - fix(adb): force page scale factor update on connection (4755)
a721ba5a - devops: give unique names to test shards (4756)
3219057a - fix(webkit): support utf-8 characters in postData, bump to 1407 (4744)
5a1c9f1f - fix(selector): bring back v1 query logic (4754)
9a0023cc - fix(selectors): text engine after capture matches scope (4749)
35533b15 - fix(scroll): scroll from under the sticky header (4641)
e4658ea9 - browser(webkit): base64 encode request.postData (4743)
7385b31f - fix(driver): stop sending protocol messages after disconnect (4688)
94f5002a - browser(webkit): install patchelf (required by generate-bundle) (4741)
b014fa18 - browser(webkit): roll to 12-16 (4739)
23a6e4df - chore: restructure and optimise test files (4736)
50b0b479 - browser(webkit): mac build fix after roll to 12-15 (4733)
2c409b04 - fix(android): leaking adb socket connections (4730)
0af34a4f - devops: firefox build now requires newer MacOS SDK to build against (4732)
97be66b1 - fix(adb): enable newPage in mobile browser (4728)
eecb7983 - browser(webkit): roll to 12-15 (4727)
69476a86 - chore: add support for macOS Big Sur 11.1 (4724)
e02c5448 - chore(adb): make driver smaller (4713)
b09e0d01 - fix(launchdoctor): make launch doctor to warn on Win7 (4718)
355a58e6 - feat(storage): accept path in save/load storage apis (4714)
5f6ccee7 - browser(firefox): roll Firefox to beta Dec 14, 2020 (4716)
0b8f34e7 - docs: rename aggregate parameter objects to params (4715)
ab63063c - fix(tracing): store relative video path in the trace (4710)
e91eee84 - chore: cut v1.7.0 (4705)
</details>