2021-06-08 16:43:34 -07:00
---
id: release-notes
title: "Release notes"
---
<!-- TOC -->
2021-08-13 15:02:24 -07:00
## Version 1.14
#### ⚡️ New "strict" mode
Selector ambiguity is a common problem in automation testing. ** "strict" mode**
ensures that your selector points to a single element and throws otherwise.
Set `setStrict(true)` in your action calls to opt in.
```csharp
// This will throw if you have more than one button!
await page.ClickAsync("button", new Page.ClickOptions().setStrict(true));
```
2021-08-14 01:39:05 +03:00
#### 📍 New [**Locators API**](./api/class-locator)
2021-08-13 15:02:24 -07:00
Locator represents a view to the element(s) on the page. It captures the logic sufficient to retrieve the element at any given moment.
2021-08-14 01:39:05 +03:00
The difference between the [Locator ](./api/class-locator ) and [ElementHandle ](./api/class-elementhandle ) is that the latter points to a particular element, while [Locator ](./api/class-locator ) captures the logic of how to retrieve that element.
2021-08-13 15:02:24 -07:00
Also, locators are ** "strict" by default**!
```csharp
var locator = page.Locator("button");
await locator.ClickAsync();
```
2021-08-14 01:39:05 +03:00
Learn more in the [documentation ](./api/class-locator ).
2021-08-13 15:02:24 -07:00
2021-08-14 01:39:05 +03:00
#### 🧩 Experimental [**React**](./selectors#react-selectors) and [**Vue**](./selectors#vue-selectors) selector engines
2021-08-13 15:02:24 -07:00
React and Vue selectors allow selecting elements by its component name and/or property values. The syntax is very similar to [attribute selectors ](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors ) and supports all attribute selector operators.
```csharp
await page.ClickAsync("_react=SubmitButton[enabled=true]");
await page.ClickAsync("_vue=submit-button[enabled=true]");
```
2021-08-14 01:39:05 +03:00
Learn more in the [react selectors documentation ](./selectors#react-selectors ) and the [vue selectors documentation ](./selectors#vue-selectors ).
2021-08-13 15:02:24 -07:00
2021-08-14 01:39:05 +03:00
#### ✨ New [**`nth`**](./selectors#n-th-element-selector) and [**`visible`**](./selectors#selecting-visible-elements) selector engines
2021-08-13 15:02:24 -07:00
2021-08-14 01:39:05 +03:00
- [`nth` ](./selectors#n-th-element-selector ) selector engine is equivalent to the `:nth-match` pseudo class, but could be combined with other selector engines.
- [`visible` ](./selectors#selecting-visible-elements ) selector engine is equivalent to the `:visible` pseudo class, but could be combined with other selector engines.
2021-08-13 15:02:24 -07:00
```csharp
// select the first button among all buttons
await button.ClickAsync("button >> nth=0");
// or if you are using locators, you can use First, Nth() and Last
await page.Locator("button").First.ClickAsync();
// click a visible button
await button.ClickAsync("button >> visible=true");
```
### Browser Versions
- Chromium 94.0.4595.0
- Mozilla Firefox 91.0
- WebKit 15.0
2021-07-20 19:29:52 +03:00
## Version 1.13
2021-07-21 02:44:44 +03:00
#### Playwright
2021-07-20 19:29:52 +03:00
- **🖖 Programmatic drag-and-drop support** via the [`method: Page.dragAndDrop` ] API.
2021-07-21 02:44:44 +03:00
- **🔎 Enhanced HAR** with body sizes for requests and responses. Use via `recordHar` option in [`method: Browser.newContext` ].
#### Tools
- Playwright Trace Viewer now shows parameters, returned values and `console.log()` calls.
#### New and Overhauled Guides
- [Intro ](./intro.md )
- [Authentication ](./auth.md )
2021-07-20 19:29:52 +03:00
#### Browser Versions
- Chromium 93.0.4576.0
- Mozilla Firefox 90.0
- WebKit 14.2
2021-07-21 02:44:44 +03:00
#### New Playwright APIs
2021-07-20 19:29:52 +03:00
- new `baseURL` option in [`method: Browser.newContext` ] and [`method: Browser.newPage` ]
- [`method: Response.securityDetails` ] and [`method: Response.serverAddr` ]
- [`method: Page.dragAndDrop` ] and [`method: Frame.dragAndDrop` ]
- [`method: Download.cancel` ]
- [`method: Page.inputValue` ], [`method: Frame.inputValue` ] and [`method: ElementHandle.inputValue` ]
- new `force` option in [`method: Page.fill` ], [`method: Frame.fill` ], and [`method: ElementHandle.fill` ]
- new `force` option in [`method: Page.selectOption` ], [`method: Frame.selectOption` ], and [`method: ElementHandle.selectOption` ]
2021-06-08 16:43:34 -07:00
## Version 1.12
#### Highlights
- Playwright for .NET v1.12 is now stable!
- Ships with the [codegen ](./cli.md#generate-code ) and [trace viewer ](./trace-viewer.md ) tools out-of-the-box
#### Browser Versions
- Chromium 93.0.4530.0
- Mozilla Firefox 89.0
- WebKit 14.2
This version of Playwright was also tested against the following stable channels:
- Google Chrome 91
- Microsoft Edge 91