appwright
Version:
E2E mobile app testing done right, with the Playwright test runner
182 lines (138 loc) • 4.36 kB
Markdown
//img.shields.io/npm/v/appwright?color=4AC61C)
Appwright is a test framework for e2e testing of mobile apps. Appwright builds on top of [Appium](https://appium.io/docs/en/latest/), and can
run tests on local devices, emulators, and remote device farms — for both iOS and Android.
Appwright is one integrated package that combines an automation driver, test runner and test
reporter. To achieve this, Appwright uses the [Playwright](https://github.com/microsoft/playwright) test runner internally, which is
purpose-built for the e2e testing workflow.
Appwright exposes an ergonomic API to automate user actions. These actions auto-wait and auto-retry
for UI elements to be ready and interactable, which makes your tests easier to read and maintain.
```ts
import { test, expect } from "appwright";
test("User can login", async ({ device }) => {
await device.getByText("Username").fill("admin");
await device.getByText("Password").fill("password");
await device.getByText("Login").tap();
});
```
Links to help you get started.
- [Example project](https://github.com/empirical-run/appwright/tree/main/example)
- [Launch blog post](https://www.empirical.run/blog/appwright)
- [Documentation](
- Node 18.20.4 or higher
```sh
npm i --save-dev appwright
touch appwright.config.ts
```
```ts
// In appwright.config.ts
import { defineConfig, Platform } from "appwright";
export default defineConfig({
projects: [
{
name: "android",
use: {
platform: Platform.ANDROID,
device: {
provider: "emulator", // or 'local-device' or 'browserstack'
},
buildPath: "app-release.apk",
},
},
{
name: "ios",
use: {
platform: Platform.IOS,
device: {
provider: "emulator", // or 'local-device' or 'browserstack'
},
buildPath: "app-release.app", // Path to your .app file
},
},
],
});
```
- `platform`: The platform you want to test on, such as 'android' or 'ios'.
- `provider`: The device provider where you want to run your tests.
You can choose between `browserstack`, `lambdatest`, `emulator`, or `local-device`.
- `buildPath`: The path to your build file. For Android, it should be an APK file.
For iOS, if you are running tests on real device, it should be an `.ipa` file. For running tests on an emulator, it should be a `.app` file.
To run tests, you need to specify the project name with `--project` flag.
```sh
npx appwright test --project android
npx appwright test --project ios
```
Appwright supports BrowserStack out of the box. To run tests on BrowserStack, configure
the provider in your config.
```ts
{
name: "android",
use: {
platform: Platform.ANDROID,
device: {
provider: "browserstack",
// Specify device to run the tests on
// See supported devices: https://www.browserstack.com/list-of-browsers-and-platforms/app_automate
name: "Google Pixel 8",
osVersion: "14.0",
},
buildPath: "app-release.apk",
},
},
```
Appwright supports LambdaTest out of the box. To run tests on LambdaTest, configure
the provider in your config.
```ts
{
name: "android",
use: {
platform: Platform.ANDROID,
device: {
provider: "lambdatest",
// Specify device to run the tests on
// See supported devices: https://www.lambdatest.com/list-of-real-devices
name: "Pixel 8",
osVersion: "14",
},
buildPath: "app-release.apk",
},
},
```
To run the sample project:
- Navigate to the `example` directory.
```sh
cd example
```
- Install dependencies.
```sh
npm install
```
- Run the tests
Run the following command to execute tests on an Android emulator:
```sh
npx appwright test --project android
```
To run the tests on iOS simulator:
- Unzip the `wikipedia.zip` file
```sh
npm run extract:app
```
- Run the following command:
```sh
npx appwright test --project ios
```
- [Basics](docs/basics.md)
- [Configuration](docs/config.md)
- [Locators](docs/locators.md)
- [Assertions](docs/assertions.md)
- [API reference](docs/api-reference.md)
![NPM Version](https: