Playwright Test Runner avatar
Playwright Test Runner

Pricing

Pay per usage

Go to Store
Playwright Test Runner

Playwright Test Runner

Developed by

Jindřich Bär

Jindřich Bär

Maintained by Community

Run Playwright tests across numerous browser configurations with Apify. Create your tests in seconds and get comprehensive test reports faster than ever.

0.0 (0)

Pricing

Pay per usage

5

Total users

30

Monthly users

6

Runs succeeded

>99%

Last modified

2 years ago

You can access the Playwright Test Runner programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in Integrations settings in Apify Console.

{
"openapi": "3.0.1",
"info": {
"version": "0.1",
"x-build-id": "gQ0hOsWq43SCt8jEc"
},
"servers": [
{
"url": "https://api.apify.com/v2"
}
],
"paths": {
"/acts/jindrich.bar~playwright-test/run-sync-get-dataset-items": {
"post": {
"operationId": "run-sync-get-dataset-items-jindrich.bar-playwright-test",
"x-openai-isConsequential": false,
"summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/acts/jindrich.bar~playwright-test/runs": {
"post": {
"operationId": "runs-sync-jindrich.bar-playwright-test",
"x-openai-isConsequential": false,
"summary": "Executes an Actor and returns information about the initiated run in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/runsResponseSchema"
}
}
}
}
}
}
},
"/acts/jindrich.bar~playwright-test/run-sync": {
"post": {
"operationId": "run-sync-jindrich.bar-playwright-test",
"x-openai-isConsequential": false,
"summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
}
},
"components": {
"schemas": {
"inputSchema": {
"type": "object",
"required": [
"testCode"
],
"properties": {
"testCode": {
"title": "Test suite code",
"type": "string",
"description": "Contents of the test suite file."
},
"screenWidth": {
"title": "Screen width",
"type": "integer",
"description": "Screen width in pixels. Default is `1280`.",
"default": 1280
},
"screenHeight": {
"title": "Screen height",
"type": "integer",
"description": "Screen height in pixels. Default is `720`.",
"default": 720
},
"headful": {
"title": "Run in headful mode",
"type": "boolean",
"description": "Runs tests in headful mode. Try turning this on if you are having problems e.g. with bot protection services. Default is `false`.",
"default": false
},
"darkMode": {
"title": "Dark mode?",
"type": "boolean",
"description": "Should the tests run in the dark mode? Default is `false`.",
"default": false
},
"locale": {
"title": "Locale",
"enum": [
"af-NA",
"af-ZA",
"ak-GH",
"sq-AL",
"am-ET",
"ar-DZ",
"ar-BH",
"ar-EG",
"ar-IQ",
"ar-JO",
"ar-KW",
"ar-LB",
"ar-LY",
"ar-MA",
"ar-OM",
"ar-QA",
"ar-SA",
"ar-SD",
"ar-SY",
"ar-TN",
"ar-AE",
"ar-YE",
"hy-AM",
"as-IN",
"asa-TZ",
"az-Cyrl",
"az-Cyrl-AZ",
"az-Latn",
"az-Latn-AZ",
"bm-ML",
"eu-ES",
"be-BY",
"bem-ZM",
"bez-TZ",
"bn-BD",
"bn-IN",
"bs-BA",
"bg-BG",
"my-MM",
"yue-Hant-HK",
"ca-ES",
"tzm-Latn",
"tzm-Latn-MA",
"chr-US",
"cgg-UG",
"zh-Hans",
"zh-Hans-CN",
"zh-Hans-HK",
"zh-Hans-MO",
"zh-Hans-SG",
"zh-Hant",
"zh-Hant-HK",
"zh-Hant-MO",
"zh-Hant-TW",
"kw-GB",
"hr-HR",
"cs-CZ",
"da-DK",
"nl-BE",
"nl-NL",
"ebu-KE",
"en-AS",
"en-AU",
"en-BE",
"en-BZ",
"en-BW",
"en-CA",
"en-GU",
"en-HK",
"en-IN",
"en-IE",
"en-IL",
"en-JM",
"en-MT",
"en-MH",
"en-MU",
"en-NA",
"en-NZ",
"en-MP",
"en-PK",
"en-PH",
"en-SG",
"en-ZA",
"en-TT",
"en-UM",
"en-VI",
"en-GB",
"en-US",
"en-ZW",
"et-EE",
"ee-GH",
"ee-TG",
"fo-FO",
"fil-PH",
"fi-FI",
"fr-BE",
"fr-BJ",
"fr-BF",
"fr-BI",
"fr-CM",
"fr-CA",
"fr-CF",
"fr-TD",
"fr-KM",
"fr-CG",
"fr-CD",
"fr-CI",
"fr-DJ",
"fr-GQ",
"fr-FR",
"fr-GA",
"fr-GP",
"fr-GN",
"fr-LU",
"fr-MG",
"fr-ML",
"fr-MQ",
"fr-MC",
"fr-NE",
"fr-RW",
"fr-RE",
"fr-BL",
"fr-MF",
"fr-SN",
"fr-CH",
"fr-TG",
"ff-SN",
"gl-ES",
"lg-UG",
"ka-GE",
"de-AT",
"de-BE",
"de-DE",
"de-LI",
"de-LU",
"de-CH",
"el-CY",
"el-GR",
"gu-IN",
"guz-KE",
"ha-Latn",
"ha-Latn-GH",
"ha-Latn-NE",
"ha-Latn-NG",
"haw-US",
"he-IL",
"hi-IN",
"hu-HU",
"is-IS",
"ig-NG",
"id-ID",
"ga-IE",
"it-IT",
"it-CH",
"ja-JP",
"kea-CV",
"kab-DZ",
"kl-GL",
"kln-KE",
"kam-KE",
"kn-IN",
"kk-Cyrl",
"kk-Cyrl-KZ",
"km-KH",
"ki-KE",
"rw-RW",
"kok-IN",
"ko-KR",
"khq-ML",
"ses-ML",
"lag-TZ",
"lv-LV",
"lt-LT",
"luo-KE",
"luy-KE",
"mk-MK",
"jmc-TZ",
"kde-TZ",
"mg-MG",
"ms-BN",
"ms-MY",
"ml-IN",
"mt-MT",
"gv-GB",
"mr-IN",
"mas-KE",
"mas-TZ",
"mer-KE",
"mfe-MU",
"naq-NA",
"ne-IN",
"ne-NP",
"nd-ZW",
"nb-NO",
"nn-NO",
"nyn-UG",
"or-IN",
"om-ET",
"om-KE",
"ps-AF",
"fa-AF",
"fa-IR",
"pl-PL",
"pt-BR",
"pt-GW",
"pt-MZ",
"pt-PT",
"pa-Arab",
"pa-Arab-PK",
"pa-Guru",
"pa-Guru-IN",
"ro-MD",
"ro-RO",
"rm-CH",
"rof-TZ",
"ru-MD",
"ru-RU",
"ru-UA",
"rwk-TZ",
"saq-KE",
"sg-CF",
"seh-MZ",
"sr-Cyrl",
"sr-Cyrl-BA",
"sr-Cyrl-ME",
"sr-Cyrl-RS",
"sr-Latn",
"sr-Latn-BA",
"sr-Latn-ME",
"sr-Latn-RS",
"sn-ZW",
"ii-CN",
"si-LK",
"sk-SK",
"sl-SI",
"xog-UG",
"so-DJ",
"so-ET",
"so-KE",
"so-SO",
"es-AR",
"es-BO",
"es-CL",
"es-CO",
"es-CR",
"es-DO",
"es-EC",
"es-SV",
"es-GQ",
"es-GT",
"es-HN",
"es-419",
"es-MX",
"es-NI",
"es-PA",
"es-PY",
"es-PE",
"es-PR",
"es-ES",
"es-US",
"es-UY",
"es-VE",
"sw-KE",
"sw-TZ",
"sv-FI",
"sv-SE",
"gsw-CH",
"shi-Latn",
"shi-Latn-MA",
"shi-Tfng",
"shi-Tfng-MA",
"dav-KE",
"ta-IN",
"ta-LK",
"te-IN",
"teo-KE",
"teo-UG",
"th-TH",
"bo-CN",
"bo-IN",
"ti-ER",
"ti-ET",
"to-TO",
"tr-TR",
"uk-UA",
"ur-IN",
"ur-PK",
"uz-Arab",
"uz-Arab-AF",
"uz-Cyrl",
"uz-Cyrl-UZ",
"uz-Latn",
"uz-Latn-UZ",
"vi-VN",
"vun-TZ",
"cy-GB",
"yo-NG",
"zu-ZA"
],
"type": "string",
"description": "Locale to use for the test. Default is `en-US`.",
"default": "en-US"
},
"timeout": {
"title": "Timeout",
"type": "integer",
"description": "Maximum run time for the entire test suite (in seconds). Default is `60`.",
"default": 60
},
"video": {
"title": "Record video",
"enum": [
"on",
"off",
"retain-on-failure",
"on-first-retry"
],
"type": "string",
"description": "Record video of the test run. If set to 'retain-on-failure', video will be recorded only if the test fails. If set to 'on-first-retry', video will be recorded only on the first retry of the test.",
"default": "off"
}
}
},
"runsResponseSchema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"actId": {
"type": "string"
},
"userId": {
"type": "string"
},
"startedAt": {
"type": "string",
"format": "date-time",
"example": "2025-01-08T00:00:00.000Z"
},
"finishedAt": {
"type": "string",
"format": "date-time",
"example": "2025-01-08T00:00:00.000Z"
},
"status": {
"type": "string",
"example": "READY"
},
"meta": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"example": "API"
},
"userAgent": {
"type": "string"
}
}
},
"stats": {
"type": "object",
"properties": {
"inputBodyLen": {
"type": "integer",
"example": 2000
},
"rebootCount": {
"type": "integer",
"example": 0
},
"restartCount": {
"type": "integer",
"example": 0
},
"resurrectCount": {
"type": "integer",
"example": 0
},
"computeUnits": {
"type": "integer",
"example": 0
}
}
},
"options": {
"type": "object",
"properties": {
"build": {
"type": "string",
"example": "latest"
},
"timeoutSecs": {
"type": "integer",
"example": 300
},
"memoryMbytes": {
"type": "integer",
"example": 1024
},
"diskMbytes": {
"type": "integer",
"example": 2048
}
}
},
"buildId": {
"type": "string"
},
"defaultKeyValueStoreId": {
"type": "string"
},
"defaultDatasetId": {
"type": "string"
},
"defaultRequestQueueId": {
"type": "string"
},
"buildNumber": {
"type": "string",
"example": "1.0.0"
},
"containerUrl": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"ACTOR_COMPUTE_UNITS": {
"type": "integer",
"example": 0
},
"DATASET_READS": {
"type": "integer",
"example": 0
},
"DATASET_WRITES": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_READS": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_WRITES": {
"type": "integer",
"example": 1
},
"KEY_VALUE_STORE_LISTS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_READS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_WRITES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_INTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_EXTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_SERPS": {
"type": "integer",
"example": 0
}
}
},
"usageTotalUsd": {
"type": "number",
"example": 0.00005
},
"usageUsd": {
"type": "object",
"properties": {
"ACTOR_COMPUTE_UNITS": {
"type": "integer",
"example": 0
},
"DATASET_READS": {
"type": "integer",
"example": 0
},
"DATASET_WRITES": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_READS": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_WRITES": {
"type": "number",
"example": 0.00005
},
"KEY_VALUE_STORE_LISTS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_READS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_WRITES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_INTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_EXTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_SERPS": {
"type": "integer",
"example": 0
}
}
}
}
}
}
}
}
}
}

Playwright Test Runner OpenAPI definition

OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.

OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.

By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.

You can download the OpenAPI definitions for Playwright Test Runner from the options below:

If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.

You can also check out our other API clients: