diff --git a/docs/examples/README.md b/docs/examples/README.md
index 051a6cff30..5de03ae3ae 100644
--- a/docs/examples/README.md
+++ b/docs/examples/README.md
@@ -1,6 +1,6 @@
# Get started with examples
-Learn how to install Playwright, set up your dev environment to author Playwright scripts, and example recipes to bootstrap your scripts.
+Learn how to install Playwright, set up your dev environment, and read through example recipes. Use the [API reference](../api.md) for more exhaustive documentation.
## Installing Playwright
@@ -25,17 +25,18 @@ const { chromium } = require('playwright');
Playwright scripts can be developed just like any other Node.js script. For example, you can use the [Node.js debugger](https://nodejs.org/api/debugger.html) or [VS Code debugging](https://code.visualstudio.com/docs/nodejs/nodejs-debugging) to set breakpoints and get fine grained control over execution.
-### Running browsers for debugging
+#### Running browsers for debugging
+
+
By default, Playwright runs the browsers in headless mode. To see the browser UI, pass the `headless: false` flag while launching the browser. You can also use `slowMo` to slow down execution.
```js
- chromium.launch({ headless: false, slowMo: 50 });
+chromium.launch({ headless: false, slowMo: 50 });
```
It is also possible to open **browser developer tools** during execution, to inspect the DOM tree or network activity. This is possible in Chromium, Firefox and WebKit.
-

## Core concepts
@@ -43,6 +44,35 @@ It is also possible to open **browser developer tools** during execution, to ins
* A [`BrowserContext`](../api.md#class-browsercontext) is an isolated incognito session within a browser instance. Browser contexts are fast to create and can be used to parallelize isolated test executions.
* A [`Page`](../api.md#class-page) refers to a single tab within a browser context, which includes one or more [`Frame`](../api.md#class-frame) objects.
+#### Working with elements
+
+* Selector engines: Playwright can query elements on a web page through [multiple selector engines](../selectors.md) like CSS, HTML attributes, XPath and text contents.
+* Actions on elements: Use methods like [`page.click`](../api.md#pageclickselector-options) or [`page.fill`](../api.md#pagefillselector-value-options) to execute actions on elements.
+ * **Auto-wait** for elements: These actions auto-wait for the element to be ready. If these actions result in page navigations, they are also awaited automatically.
+
+ ```js
+ // Wait for element to be ready, click it and wait for navigations (if any)
+ await page.click('text="Login"');
+ ```
+
+* Use the [`page.waitForSelector`](../api.md#pagewaitforselectorselector-options) method to explicitly wait for elements.
+
+ ```js
+ // Explicitly wait for the #search field to be present in the DOM
+ const search = await page.waitForSelector('#search');
+ // Retrieve the query value from the element
+ const query = await search.evaluate(element => element.value);
+ ```
+
+* Assertions on elements: Use [`page.$`](../api.md#pageselector) to get the element from the page and [`page.$eval`](../api.md#pageevalselector-pagefunction-arg-1) to run a JS function in the execution context of the page.
+ * These can be used to assert element properties, like visibility or text contents.
+ * These methods behave similar to the `$` operator in DevTools console or jQuery. They fetch the element from the page without waiting. If required, use `page.waitForSelector` and `evaluate` instead, as described above.
+
+ ```js
+ // Get value of the #search field
+ const query = await page.$eval('#search', element => element.value);
+ ```
+
## Example recipes
### [Authentication](authentication.js)
@@ -60,4 +90,4 @@ Other examples
* Handling a popup, eg, accept dialog
* Page navigation and wait for load
* Async page load (see #662)
--->
\ No newline at end of file
+-->
diff --git a/docs/showcase.md b/docs/showcase.md
index af86621fb9..956aa225b0 100644
--- a/docs/showcase.md
+++ b/docs/showcase.md
@@ -36,6 +36,7 @@
* [react-app-playwright](https://github.com/KyleADay/react-app-playwright): Using Playwright with a create-react-app project
* [playwright-react-typescript-jest-example](https://github.com/azemetre/playwright-react-typescript-jest-example): Using Playwright + Jest with a custom webpack configuration for React + Typescript project
* [playwright-mocha](https://github.com/roggerfe/playwright-mocha): Using Playwright with Mocha and Chai
+* [playwright-cljs](https://github.com/apeckham/playwright-cljs): Playwright examples in ClojureScript
* [playwright-github-actions](https://github.com/arjun27/playwright-github-actions/actions): Playwright setup on GitHub Actions
* [playwright-azure-functions](https://github.com/arjun27/playwright-azure-functions): Playwright setup on Azure Functions
* [playwright-aws-lambda](https://github.com/austinkelleher/playwright-aws-lambda): Playwright setup on AWS Lambda