
Playwright Test Runner
No credit card required

Playwright Test Runner
No credit card required
Run Playwright tests across numerous browser configurations with Apify. Create your tests in seconds and get comprehensive test reports faster than ever.
You can access the Playwright Test Runner programmatically from your own applications by using the Apify API. You can 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.
1{
2 "openapi": "3.0.1",
3 "info": {
4 "version": "0.1",
5 "x-build-id": "gQ0hOsWq43SCt8jEc"
6 },
7 "servers": [
8 {
9 "url": "https://api.apify.com/v2"
10 }
11 ],
12 "paths": {
13 "/acts/jindrich.bar~playwright-test/run-sync-get-dataset-items": {
14 "post": {
15 "operationId": "run-sync-get-dataset-items-jindrich.bar-playwright-test",
16 "x-openai-isConsequential": false,
17 "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
18 "tags": [
19 "Run Actor"
20 ],
21 "requestBody": {
22 "required": true,
23 "content": {
24 "application/json": {
25 "schema": {
26 "$ref": "#/components/schemas/inputSchema"
27 }
28 }
29 }
30 },
31 "parameters": [
32 {
33 "name": "token",
34 "in": "query",
35 "required": true,
36 "schema": {
37 "type": "string"
38 },
39 "description": "Enter your Apify token here"
40 }
41 ],
42 "responses": {
43 "200": {
44 "description": "OK"
45 }
46 }
47 }
48 },
49 "/acts/jindrich.bar~playwright-test/runs": {
50 "post": {
51 "operationId": "runs-sync-jindrich.bar-playwright-test",
52 "x-openai-isConsequential": false,
53 "summary": "Executes an Actor and returns information about the initiated run in response.",
54 "tags": [
55 "Run Actor"
56 ],
57 "requestBody": {
58 "required": true,
59 "content": {
60 "application/json": {
61 "schema": {
62 "$ref": "#/components/schemas/inputSchema"
63 }
64 }
65 }
66 },
67 "parameters": [
68 {
69 "name": "token",
70 "in": "query",
71 "required": true,
72 "schema": {
73 "type": "string"
74 },
75 "description": "Enter your Apify token here"
76 }
77 ],
78 "responses": {
79 "200": {
80 "description": "OK",
81 "content": {
82 "application/json": {
83 "schema": {
84 "$ref": "#/components/schemas/runsResponseSchema"
85 }
86 }
87 }
88 }
89 }
90 }
91 },
92 "/acts/jindrich.bar~playwright-test/run-sync": {
93 "post": {
94 "operationId": "run-sync-jindrich.bar-playwright-test",
95 "x-openai-isConsequential": false,
96 "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
97 "tags": [
98 "Run Actor"
99 ],
100 "requestBody": {
101 "required": true,
102 "content": {
103 "application/json": {
104 "schema": {
105 "$ref": "#/components/schemas/inputSchema"
106 }
107 }
108 }
109 },
110 "parameters": [
111 {
112 "name": "token",
113 "in": "query",
114 "required": true,
115 "schema": {
116 "type": "string"
117 },
118 "description": "Enter your Apify token here"
119 }
120 ],
121 "responses": {
122 "200": {
123 "description": "OK"
124 }
125 }
126 }
127 }
128 },
129 "components": {
130 "schemas": {
131 "inputSchema": {
132 "type": "object",
133 "required": [
134 "testCode"
135 ],
136 "properties": {
137 "testCode": {
138 "title": "Test suite code",
139 "type": "string",
140 "description": "Contents of the test suite file."
141 },
142 "screenWidth": {
143 "title": "Screen width",
144 "type": "integer",
145 "description": "Screen width in pixels. Default is `1280`.",
146 "default": 1280
147 },
148 "screenHeight": {
149 "title": "Screen height",
150 "type": "integer",
151 "description": "Screen height in pixels. Default is `720`.",
152 "default": 720
153 },
154 "headful": {
155 "title": "Run in headful mode",
156 "type": "boolean",
157 "description": "Runs tests in headful mode. Try turning this on if you are having problems e.g. with bot protection services. Default is `false`.",
158 "default": false
159 },
160 "darkMode": {
161 "title": "Dark mode?",
162 "type": "boolean",
163 "description": "Should the tests run in the dark mode? Default is `false`.",
164 "default": false
165 },
166 "locale": {
167 "title": "Locale",
168 "enum": [
169 "af-NA",
170 "af-ZA",
171 "ak-GH",
172 "sq-AL",
173 "am-ET",
174 "ar-DZ",
175 "ar-BH",
176 "ar-EG",
177 "ar-IQ",
178 "ar-JO",
179 "ar-KW",
180 "ar-LB",
181 "ar-LY",
182 "ar-MA",
183 "ar-OM",
184 "ar-QA",
185 "ar-SA",
186 "ar-SD",
187 "ar-SY",
188 "ar-TN",
189 "ar-AE",
190 "ar-YE",
191 "hy-AM",
192 "as-IN",
193 "asa-TZ",
194 "az-Cyrl",
195 "az-Cyrl-AZ",
196 "az-Latn",
197 "az-Latn-AZ",
198 "bm-ML",
199 "eu-ES",
200 "be-BY",
201 "bem-ZM",
202 "bez-TZ",
203 "bn-BD",
204 "bn-IN",
205 "bs-BA",
206 "bg-BG",
207 "my-MM",
208 "yue-Hant-HK",
209 "ca-ES",
210 "tzm-Latn",
211 "tzm-Latn-MA",
212 "chr-US",
213 "cgg-UG",
214 "zh-Hans",
215 "zh-Hans-CN",
216 "zh-Hans-HK",
217 "zh-Hans-MO",
218 "zh-Hans-SG",
219 "zh-Hant",
220 "zh-Hant-HK",
221 "zh-Hant-MO",
222 "zh-Hant-TW",
223 "kw-GB",
224 "hr-HR",
225 "cs-CZ",
226 "da-DK",
227 "nl-BE",
228 "nl-NL",
229 "ebu-KE",
230 "en-AS",
231 "en-AU",
232 "en-BE",
233 "en-BZ",
234 "en-BW",
235 "en-CA",
236 "en-GU",
237 "en-HK",
238 "en-IN",
239 "en-IE",
240 "en-IL",
241 "en-JM",
242 "en-MT",
243 "en-MH",
244 "en-MU",
245 "en-NA",
246 "en-NZ",
247 "en-MP",
248 "en-PK",
249 "en-PH",
250 "en-SG",
251 "en-ZA",
252 "en-TT",
253 "en-UM",
254 "en-VI",
255 "en-GB",
256 "en-US",
257 "en-ZW",
258 "et-EE",
259 "ee-GH",
260 "ee-TG",
261 "fo-FO",
262 "fil-PH",
263 "fi-FI",
264 "fr-BE",
265 "fr-BJ",
266 "fr-BF",
267 "fr-BI",
268 "fr-CM",
269 "fr-CA",
270 "fr-CF",
271 "fr-TD",
272 "fr-KM",
273 "fr-CG",
274 "fr-CD",
275 "fr-CI",
276 "fr-DJ",
277 "fr-GQ",
278 "fr-FR",
279 "fr-GA",
280 "fr-GP",
281 "fr-GN",
282 "fr-LU",
283 "fr-MG",
284 "fr-ML",
285 "fr-MQ",
286 "fr-MC",
287 "fr-NE",
288 "fr-RW",
289 "fr-RE",
290 "fr-BL",
291 "fr-MF",
292 "fr-SN",
293 "fr-CH",
294 "fr-TG",
295 "ff-SN",
296 "gl-ES",
297 "lg-UG",
298 "ka-GE",
299 "de-AT",
300 "de-BE",
301 "de-DE",
302 "de-LI",
303 "de-LU",
304 "de-CH",
305 "el-CY",
306 "el-GR",
307 "gu-IN",
308 "guz-KE",
309 "ha-Latn",
310 "ha-Latn-GH",
311 "ha-Latn-NE",
312 "ha-Latn-NG",
313 "haw-US",
314 "he-IL",
315 "hi-IN",
316 "hu-HU",
317 "is-IS",
318 "ig-NG",
319 "id-ID",
320 "ga-IE",
321 "it-IT",
322 "it-CH",
323 "ja-JP",
324 "kea-CV",
325 "kab-DZ",
326 "kl-GL",
327 "kln-KE",
328 "kam-KE",
329 "kn-IN",
330 "kk-Cyrl",
331 "kk-Cyrl-KZ",
332 "km-KH",
333 "ki-KE",
334 "rw-RW",
335 "kok-IN",
336 "ko-KR",
337 "khq-ML",
338 "ses-ML",
339 "lag-TZ",
340 "lv-LV",
341 "lt-LT",
342 "luo-KE",
343 "luy-KE",
344 "mk-MK",
345 "jmc-TZ",
346 "kde-TZ",
347 "mg-MG",
348 "ms-BN",
349 "ms-MY",
350 "ml-IN",
351 "mt-MT",
352 "gv-GB",
353 "mr-IN",
354 "mas-KE",
355 "mas-TZ",
356 "mer-KE",
357 "mfe-MU",
358 "naq-NA",
359 "ne-IN",
360 "ne-NP",
361 "nd-ZW",
362 "nb-NO",
363 "nn-NO",
364 "nyn-UG",
365 "or-IN",
366 "om-ET",
367 "om-KE",
368 "ps-AF",
369 "fa-AF",
370 "fa-IR",
371 "pl-PL",
372 "pt-BR",
373 "pt-GW",
374 "pt-MZ",
375 "pt-PT",
376 "pa-Arab",
377 "pa-Arab-PK",
378 "pa-Guru",
379 "pa-Guru-IN",
380 "ro-MD",
381 "ro-RO",
382 "rm-CH",
383 "rof-TZ",
384 "ru-MD",
385 "ru-RU",
386 "ru-UA",
387 "rwk-TZ",
388 "saq-KE",
389 "sg-CF",
390 "seh-MZ",
391 "sr-Cyrl",
392 "sr-Cyrl-BA",
393 "sr-Cyrl-ME",
394 "sr-Cyrl-RS",
395 "sr-Latn",
396 "sr-Latn-BA",
397 "sr-Latn-ME",
398 "sr-Latn-RS",
399 "sn-ZW",
400 "ii-CN",
401 "si-LK",
402 "sk-SK",
403 "sl-SI",
404 "xog-UG",
405 "so-DJ",
406 "so-ET",
407 "so-KE",
408 "so-SO",
409 "es-AR",
410 "es-BO",
411 "es-CL",
412 "es-CO",
413 "es-CR",
414 "es-DO",
415 "es-EC",
416 "es-SV",
417 "es-GQ",
418 "es-GT",
419 "es-HN",
420 "es-419",
421 "es-MX",
422 "es-NI",
423 "es-PA",
424 "es-PY",
425 "es-PE",
426 "es-PR",
427 "es-ES",
428 "es-US",
429 "es-UY",
430 "es-VE",
431 "sw-KE",
432 "sw-TZ",
433 "sv-FI",
434 "sv-SE",
435 "gsw-CH",
436 "shi-Latn",
437 "shi-Latn-MA",
438 "shi-Tfng",
439 "shi-Tfng-MA",
440 "dav-KE",
441 "ta-IN",
442 "ta-LK",
443 "te-IN",
444 "teo-KE",
445 "teo-UG",
446 "th-TH",
447 "bo-CN",
448 "bo-IN",
449 "ti-ER",
450 "ti-ET",
451 "to-TO",
452 "tr-TR",
453 "uk-UA",
454 "ur-IN",
455 "ur-PK",
456 "uz-Arab",
457 "uz-Arab-AF",
458 "uz-Cyrl",
459 "uz-Cyrl-UZ",
460 "uz-Latn",
461 "uz-Latn-UZ",
462 "vi-VN",
463 "vun-TZ",
464 "cy-GB",
465 "yo-NG",
466 "zu-ZA"
467 ],
468 "type": "string",
469 "description": "Locale to use for the test. Default is `en-US`.",
470 "default": "en-US"
471 },
472 "timeout": {
473 "title": "Timeout",
474 "type": "integer",
475 "description": "Maximum run time for the entire test suite (in seconds). Default is `60`.",
476 "default": 60
477 },
478 "video": {
479 "title": "Record video",
480 "enum": [
481 "on",
482 "off",
483 "retain-on-failure",
484 "on-first-retry"
485 ],
486 "type": "string",
487 "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.",
488 "default": "off"
489 }
490 }
491 },
492 "runsResponseSchema": {
493 "type": "object",
494 "properties": {
495 "data": {
496 "type": "object",
497 "properties": {
498 "id": {
499 "type": "string"
500 },
501 "actId": {
502 "type": "string"
503 },
504 "userId": {
505 "type": "string"
506 },
507 "startedAt": {
508 "type": "string",
509 "format": "date-time",
510 "example": "2025-01-08T00:00:00.000Z"
511 },
512 "finishedAt": {
513 "type": "string",
514 "format": "date-time",
515 "example": "2025-01-08T00:00:00.000Z"
516 },
517 "status": {
518 "type": "string",
519 "example": "READY"
520 },
521 "meta": {
522 "type": "object",
523 "properties": {
524 "origin": {
525 "type": "string",
526 "example": "API"
527 },
528 "userAgent": {
529 "type": "string"
530 }
531 }
532 },
533 "stats": {
534 "type": "object",
535 "properties": {
536 "inputBodyLen": {
537 "type": "integer",
538 "example": 2000
539 },
540 "rebootCount": {
541 "type": "integer",
542 "example": 0
543 },
544 "restartCount": {
545 "type": "integer",
546 "example": 0
547 },
548 "resurrectCount": {
549 "type": "integer",
550 "example": 0
551 },
552 "computeUnits": {
553 "type": "integer",
554 "example": 0
555 }
556 }
557 },
558 "options": {
559 "type": "object",
560 "properties": {
561 "build": {
562 "type": "string",
563 "example": "latest"
564 },
565 "timeoutSecs": {
566 "type": "integer",
567 "example": 300
568 },
569 "memoryMbytes": {
570 "type": "integer",
571 "example": 1024
572 },
573 "diskMbytes": {
574 "type": "integer",
575 "example": 2048
576 }
577 }
578 },
579 "buildId": {
580 "type": "string"
581 },
582 "defaultKeyValueStoreId": {
583 "type": "string"
584 },
585 "defaultDatasetId": {
586 "type": "string"
587 },
588 "defaultRequestQueueId": {
589 "type": "string"
590 },
591 "buildNumber": {
592 "type": "string",
593 "example": "1.0.0"
594 },
595 "containerUrl": {
596 "type": "string"
597 },
598 "usage": {
599 "type": "object",
600 "properties": {
601 "ACTOR_COMPUTE_UNITS": {
602 "type": "integer",
603 "example": 0
604 },
605 "DATASET_READS": {
606 "type": "integer",
607 "example": 0
608 },
609 "DATASET_WRITES": {
610 "type": "integer",
611 "example": 0
612 },
613 "KEY_VALUE_STORE_READS": {
614 "type": "integer",
615 "example": 0
616 },
617 "KEY_VALUE_STORE_WRITES": {
618 "type": "integer",
619 "example": 1
620 },
621 "KEY_VALUE_STORE_LISTS": {
622 "type": "integer",
623 "example": 0
624 },
625 "REQUEST_QUEUE_READS": {
626 "type": "integer",
627 "example": 0
628 },
629 "REQUEST_QUEUE_WRITES": {
630 "type": "integer",
631 "example": 0
632 },
633 "DATA_TRANSFER_INTERNAL_GBYTES": {
634 "type": "integer",
635 "example": 0
636 },
637 "DATA_TRANSFER_EXTERNAL_GBYTES": {
638 "type": "integer",
639 "example": 0
640 },
641 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
642 "type": "integer",
643 "example": 0
644 },
645 "PROXY_SERPS": {
646 "type": "integer",
647 "example": 0
648 }
649 }
650 },
651 "usageTotalUsd": {
652 "type": "number",
653 "example": 0.00005
654 },
655 "usageUsd": {
656 "type": "object",
657 "properties": {
658 "ACTOR_COMPUTE_UNITS": {
659 "type": "integer",
660 "example": 0
661 },
662 "DATASET_READS": {
663 "type": "integer",
664 "example": 0
665 },
666 "DATASET_WRITES": {
667 "type": "integer",
668 "example": 0
669 },
670 "KEY_VALUE_STORE_READS": {
671 "type": "integer",
672 "example": 0
673 },
674 "KEY_VALUE_STORE_WRITES": {
675 "type": "number",
676 "example": 0.00005
677 },
678 "KEY_VALUE_STORE_LISTS": {
679 "type": "integer",
680 "example": 0
681 },
682 "REQUEST_QUEUE_READS": {
683 "type": "integer",
684 "example": 0
685 },
686 "REQUEST_QUEUE_WRITES": {
687 "type": "integer",
688 "example": 0
689 },
690 "DATA_TRANSFER_INTERNAL_GBYTES": {
691 "type": "integer",
692 "example": 0
693 },
694 "DATA_TRANSFER_EXTERNAL_GBYTES": {
695 "type": "integer",
696 "example": 0
697 },
698 "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
699 "type": "integer",
700 "example": 0
701 },
702 "PROXY_SERPS": {
703 "type": "integer",
704 "example": 0
705 }
706 }
707 }
708 }
709 }
710 }
711 }
712 }
713 }
714}
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:
Actor Metrics
1 monthly user
-
5 bookmarks
>99% runs succeeded
Created in Feb 2023
Modified 2 years ago