| Test package | @mobilewright/testExtends Playwright Test with screen and device fixtures | @playwright/test |
|---|
| Config | mobilewright.config.tsdefineConfig from 'mobilewright' | playwright.config.ts |
|---|
| Run tests | npx mobilewright test | npx playwright test |
|---|
| What you drive | screen fixtureThe app's current screen | page fixture |
|---|
| Browser / context | device fixtureLaunch and terminate apps, deep links, orientation, geolocation | browser, context |
|---|
| Launchers | ios.launch(), android.launch() | chromium.launch(), firefox.launch(), webkit.launch() |
|---|
| Navigation | bundleId in the config launches the appdevice.goto('myapp://settings') opens deep links | page.goto(url) |
|---|
| Click | locator.tap()Plus doubleTap(), longPress(), swipe() | locator.click() |
|---|
| Locators | getByRole, getByText, getByLabel, getByTestId, getByPlaceholderRoles map to native element types; getByType for raw types | getByRole, getByText, getByLabel, getByTestId, getByPlaceholder |
|---|
| Auto-waiting | Every action waits until the element is visible, enabled and stable | Actionability checks before every action |
|---|
| Assertions | expect(locator).toBeVisible(), toHaveText(), expect.soft, expect.pollRetry until they pass or time out | expect(locator).toBeVisible(), toHaveText(), expect.soft, expect.poll |
|---|
| Projects | One project per platform or device | One project per browser |
|---|
| CLI flags | --workers, --shard, --retries, --grep, --project | --workers, --shard, --retries, --grep, --project |
|---|
| Reports | list, html, json, junit; show-report, merge-reportsVideo and a failure screenshot attached per test | list, html, json, junit; show-report, merge-reports |
|---|
| Tooling | npx mobilewright codegen, npx mobilewright inspect | npx playwright codegen, Playwright Inspector |
|---|
| Targets | iOS simulators, Android emulators, real devices, cloud devices | Chromium, Firefox, WebKit |
|---|
| Web content | screen.getByWebView().page() returns a Playwright-compatible PageFor web views inside your app | page |
|---|