{"_id":"@testla/screenplay","_rev":"32-d04ace0d5f9d3a9442e65b0eeadd74c8","name":"@testla/screenplay","dist-tags":{"latest":"1.2.1","beta":"1.2.1-beta.1"},"versions":{"0.1.0":{"name":"@testla/screenplay","version":"0.1.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.1.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"b5b601613752da7e13653654fe8be8565ab5c7fc","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.1.0.tgz","fileCount":18,"integrity":"sha512-7PMBCPsu4s+WxnzTsa2i2XiGoidoq+SE7ud7HySmTJP/sxbPkytniE87iJMcuhsjIXf3veNxZt2BCECBaNg/Hg==","signatures":[{"sig":"MEUCIFRt+28jHFW43XtmBuFJ+JEDTfzSdxH+p+jpb0VMPDDDAiEA0/+/qm0b9/xSgVpY16bpBFhI4mgp7jFjvlggsQFQD70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":47384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUDsXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmopZhAAhLRyJ4qnL/tspOpo+gKXxX95Y4Q2V9yWAilJ1lutKR4UciaS\r\niZIVv0qpdRhpHxAJC7CqWRjIm6z+RW5qn157F6Oe3V77LYR4Kx4FPGqJe7vI\r\n+Idr8kFVni4K5W5L5S1x/x7XpJVBqzNOYhEqw/suG6NC6Lh71fp/HL2cYA16\r\ngvS8pl4rGIRxEJfvWC1GDWBPLkMYx50XO1aV4PFgbX/L+I8AR8VtQsHJ8zva\r\nUJMqwdXp9PUCjZ/oxr2w7niC/Gb20FEv7BaM0wSC+kRlyaTJXoMRfIWIN+XU\r\nBlxW2LgeOSXdi40fkIO7ogm+t2RTppy1322dGCHMbV0asfUgcI7XXDH1rB/B\r\nh6pOcGy3EqmC87cp3O/dHFU30uGwZiKgGtnq3AwsV6j87kAUIlKSjFZrwFPp\r\naS30lgq0gYvCEJE29uUGQNCPaF15FpDxJCRL+F7hQAdPQO9dCQvqsILuwvqZ\r\nvx248ONaZPEkAwHsxKHO/mliCphyHlq2x4EI8oXZ9+tLHJXo5yZz9T4IU99m\r\nY2RkFpSTFInkBYYbJpPKJjEErZnLmtb/E5cdtqvxs7MmbyVrrISdCKec8MjT\r\nsUdb6qPbYTO9QmdoUQvxca18+2f/y8zELZdE50WgORx3pa8DVw++oqqzYTSW\r\n26HI/85PORWK75AU8tG+GOg21hryYGEyDls=\r\n=mc0E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"71379e10e3175e8e9d43b071bc94b66cacba8dbe","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"echo \"Error: no test specified\" && exit 1","build":"rm -r lib && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint","prepublishOnly":"npm run lint"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"8.1.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"16.13.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.12.0","typescript":"^4.6.3","@types/node":"^17.0.23","eslint-config-airbnb":"^19.0.4","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.1.0_1649425174969_0.5391219380162369","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@testla/screenplay","version":"0.2.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.2.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"3ed25d60a2ff9e9a5bb2737f1fa5e2f51dcdc45c","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.2.0.tgz","fileCount":17,"integrity":"sha512-JyAAPcnuvh06rXVt9byaHYLPriUhmsPMuFGWUYYqztO6GzE3e23uHGU/UiuAjwQi4i8mLNZUqbnZKFtYVanZQw==","signatures":[{"sig":"MEQCIAMRfbiiZozigKeMTIchK6my3Vamh60wjmOz0H/0K5jcAiAerWpb1kVpaPFmmHwJSzCl3NyPMTacURpolfy37VCxEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVDBYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpyfg//bNVEhM/kuAop99gU6MvtCCtFoNQP0+dsdis0rezPRTLrZPUw\r\nMjffKL5WkGxQCDmq/u7VpsNEgjxW4AW3TJjUxJneCVLzv+wOa0Ot7mbmqpdF\r\n8j8nFvlEIeGCN7zXgJbWqhLtxxhjykHXP2n1HLKLQTfE1DWO9yHrqLZ0rDcI\r\nDTFRvvRbvwSL0q3hCJz7HGw8hv4WqP0Zer5AnJh++e4qDlU09GsGQKLREDSm\r\nkt91Qa/c74dCf8Fu22OmZm+HQX5eaUX3rrTnnA5KQi/1HXdjZnDXHZP//whN\r\nipkQwBeb8Hczeskuv11YygZKaP9gHc0QFIPHFxvVYdiLFM0q5hS0dZlb0fYW\r\ny8okdg/Dfc85S7PvKJp26SjTNqcbaj4PFq1lM2CWeRUezBiHlmKUXNPI9MMm\r\nPhVG+KXlw6m6SBrTnBCxH4rqZ/VnWs8knmvcec3ipJHBlrnOWccXxklC3RH0\r\nhfeURpPPy0xv4Lnkk4OaUcqR6tUqGxrdgHbyBrZa/unydzR2qnDINsonJrQ1\r\nJgMgtxUglHTuYJWG6UzZ6022AcV35+YpVNhwMOmOY/FAo3jMJ/2NVeo6wA2x\r\naG9eWNxmW46u61piSqyocp09tDjEtHP8fbBwXemKFlweCD92i+l5QKzXkxdI\r\nTJUSVxEr0jRA889EtWbwiqLzU0NlzD3WeaE=\r\n=OXeA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"bdfe8e30c55718788016f175c8d9c8440567ede9","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"echo \"Error: no test specified\" && exit 1","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint","prepublishOnly":"npm run lint"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"8.1.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"16.13.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.12.0","typescript":"^4.6.3","@types/node":"^17.0.23","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.2.0_1649684567985_0.22687890053779003","host":"s3://npm-registry-packages"}},"0.3.0-beta.1":{"name":"@testla/screenplay","version":"0.3.0-beta.1","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.3.0-beta.1","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"5d9568e0651f82d8100a43d5ab81d573e425a3bc","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.3.0-beta.1.tgz","fileCount":19,"integrity":"sha512-vzTGq03tY8366FswMcwsK/7ffuUYzm1mxdMGFO6b5mW/c46U/2+rIoW9YoK8kiiZFNYEZH+kwFsBEKKrzHt9mg==","signatures":[{"sig":"MEYCIQCA5tC2O3jHy52tDGs91J5jHWoJVKdvcl+BAszGbuNdAQIhAKmqzbplfYssSg+zcJk3to7OxuhGLH2cycLUKjI3qA33","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24983},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"e6059b8677699fd5f9ba1227d0bf74abca87b898","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint","prepublishOnly":"npm run lint"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"deprecated":"this package has been deprecated","repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"8.19.4","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"16.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.3.0-beta.1_1685962114185_0.49043999809927774","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@testla/screenplay","version":"0.3.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.3.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"8e043ac38c4bac6a61f6f7943e566e64614167a2","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.3.0.tgz","fileCount":19,"integrity":"sha512-Ky0QhToyAb/1ufNXytHSqeicg1iA3YGCoj8Iv+fIIKZo+PnidV8HScURwXWy+9H8SgSugF6p0lI0tU1Ot+ZayQ==","signatures":[{"sig":"MEUCIEUyB96d2olS910O9IuQvRWCTF1V+/2g89Ywi4hk9w1VAiEA5Y5YYa3PLpTdGD9rvywI8y3ZRxsDCQmVoR9s092L71c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25050},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"e6059b8677699fd5f9ba1227d0bf74abca87b898","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"8.19.4","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"16.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.3.0_1685969266478_0.8574077896101424","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@testla/screenplay","version":"0.4.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.4.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"757a3738f303026e98c8849773a4ffe17ed25997","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.4.0.tgz","fileCount":27,"integrity":"sha512-MBWUAVpM3RlCKp/9PUdAXsIK5bV9XpPwIjnvY26amIubiN7ych4rTAh4F3OIOyqv210R+FPkhatdyvJvRKYJlw==","signatures":[{"sig":"MEUCIEK7vFJ2sWrUYwyPcCIfLqlKwN/+gJi2TZ8UxeXPHyw9AiEAtfMlsVGunheMQB87CQoXBjuRwm1eVJpplf861o7ATl0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33794},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"7dc54db72c97a1290bd2c8a75dc7f280308d68f5","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"7.24.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.4.0_1706170501152_0.003898530166681846","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@testla/screenplay","version":"0.4.1","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.4.1","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"9fc8957903051093712744c863bce0b678add334","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.4.1.tgz","fileCount":27,"integrity":"sha512-hZaf7reCUNogpDm5flv0kRnY/qCuNsqGd+8Q74zETCHLWGaCcHjsv9riYzjzDtR/pQptPX20F5nLu3451ZBZjw==","signatures":[{"sig":"MEQCIGC091xAu7nCSC6rKBpTu2kWWIgcPY47ZBbEnBjjLd45AiB6M3vWN7H+bF3bTG6ctUH16asKm5BZrTtDT7j2BTJ0pQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":35385},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"2d2c3497b471fec4ff59f792ebe0a472c0fa204f","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"7.24.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.4.1_1707293454901_0.3026419852464468","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@testla/screenplay","version":"0.5.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@0.5.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"5dfa4de9c81825148f54ccd8ed7691fd4cca4bb7","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-0.5.0.tgz","fileCount":27,"integrity":"sha512-w3uGC0MAzKUeZtP/+QqusrZ6iQyi5W0G0yedqXVPKu9KReF2oo4/hPK9PYFTw+uE1743lewvsvWweHu7QAF2qQ==","signatures":[{"sig":"MEQCIGw0da+sV5v3GIXbHMegbrolLZ19S7rAoVpe9RX+YBp+AiArnYdiCj804hhqcoboLcXkjyKM8PTn8WABbyPnWHTQ9A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43106},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"4831a844a5cb1b6b9ebc44c064f951437d4684f2","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"7.24.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_0.5.0_1714462062084_0.9549334016897795","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@testla/screenplay","version":"1.0.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.0.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"5726aaf6d17dc5c15255deb394ddcce33186f3aa","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.0.0.tgz","fileCount":27,"integrity":"sha512-nFJOsNCU9Mq3LykfUveLzzmaQ6oFrKyzamOqJ2OrlLEp/HbXINvt8/2yTVtIY2zC4Ne6FxUnVhBR2fAPZyJ6yw==","signatures":[{"sig":"MEUCIA9caBz9Cei2aHxa9NSegdPHnMtwYCmfN0Sn5buj8zqpAiEAw7kxmbqYwJKpW9MQr7MZIgw9LzaspWVxIAdiG8ogNy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":43106},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"d2815d0e84cea70f3206ea10b24b6bab085e1021","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"7.24.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.0.0_1715008170007_0.29716899289390764","host":"s3://npm-registry-packages"}},"1.1.0-beta.1":{"name":"@testla/screenplay","version":"1.1.0-beta.1","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.1.0-beta.1","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"d4ee21049c90836ca05508d7e8de9fe20a5d82dc","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.1.0-beta.1.tgz","fileCount":33,"integrity":"sha512-bMOpX7iywKInQHKOoDLEuSJ27JNZ+hdWYrSTuPZRi5HT0tK1iYEATeoDuNz+Hmz8jE8f3xmt6Zu1HYGbqFVjEQ==","signatures":[{"sig":"MEYCIQCT3YQV4ABRTSUXdjyXNDekvsWdfJ8saxDCGsCd6eWYFAIhAMArzKWKihKeTHtmr+ggF70LaoPY5Yl/Rz1BJyVjYytU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49899},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"9cbece6de3ae806ae17570ae4c51bc34c8970788","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"10.7.0","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.20.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.1.0-beta.1_1718639241335_0.3393121451067296","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@testla/screenplay","version":"1.1.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.1.0","maintainers":[{"name":"munichbughunter","email":"munichbughunter@gmail.com"},{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"d4d4c1b4ee98c512a337252dd400554b37335be4","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.1.0.tgz","fileCount":33,"integrity":"sha512-aJtVhnKGXYFSd5OD8VWPwHbqPjrWb/bDYnVpBBjt4Si1q8zoTsHTLDGoEoO7b3Q0NPBHd4guc6vcE1Kl+R2s1g==","signatures":[{"sig":"MEYCIQCQiLFhE9xH/S5VurXEIEbsAfjjO1rhUEt5iT6lUBW+0wIhALhsF0uCWrQKA/1AYJ8FXOE87OBYq73ulIyLhqxZEhvV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":49892},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"7914742775b25003da0086f3d3d228a77fd98b84","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"10.7.0","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.20.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.1.0_1723526165162_0.4959217414722852","host":"s3://npm-registry-packages"}},"1.2.0-beta.1":{"name":"@testla/screenplay","version":"1.2.0-beta.1","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.2.0-beta.1","maintainers":[{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},{"name":"munichbughunter","email":"munichbughunter@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"f50db64b0ea08d9cb98e1f2974bc5aa8d02d4cdb","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.2.0-beta.1.tgz","fileCount":33,"integrity":"sha512-+ssxq6HhuKlNBMZvJdTY6IwNvXrOMkLtkHi25tC+g1TehO3UtotyI+cRxv8TJJqM74LTBx0n+Gg2ZeXGc7e9og==","signatures":[{"sig":"MEUCICxx4OrW9ISynEFLiEvwfZQVCaN3vc/2U+XWDr7T/wEuAiEAhdHbt13xc3R/G03IWkbSUfJoxXQ9dcnHCpffLqZjoMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56293},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"4f843709cfd868e562a0749059a9eba580c74cdb","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","actor":{"name":"kbrueckner","type":"user","email":"kenji.brueckner@gmail.com"},"email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"9.6.7","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.2.0-beta.1_1751476157119_0.883318672985935","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@testla/screenplay","version":"1.2.0","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.2.0","maintainers":[{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},{"name":"munichbughunter","email":"munichbughunter@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"769db2b63498d7c5f24c9af1cb8b1601329425ac","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.2.0.tgz","fileCount":33,"integrity":"sha512-JyKHqQhsSFEntixhb0URq4ioNLaEfWTL6/ApBt+p7wrhWdr9N/vd+MLVMbMyn/pIor3VTixTBJr8vyBNHZj8Eg==","signatures":[{"sig":"MEUCIQCDZhCi7s6GFfxPD35Sgdx70Ow8N8m91MZPX4v/nWIYzAIgXP6agd3+38/8kX0TBPt7hJyOwqgfhtLejanlMOntzes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56444},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"425f7cd7f6e5b2e0f194d9b957a3944eab12d7e0","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"9.6.7","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"18.17.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.2.0_1752814040032_0.7282628352109819","host":"s3://npm-registry-packages-npm-production"}},"1.2.1-beta.1":{"name":"@testla/screenplay","version":"1.2.1-beta.1","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","_id":"@testla/screenplay@1.2.1-beta.1","maintainers":[{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},{"name":"munichbughunter","email":"munichbughunter@gmail.com"}],"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"dist":{"shasum":"71b131fde3a810e99124c87039bb7e7cdbaaf147","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.2.1-beta.1.tgz","fileCount":35,"integrity":"sha512-uPJzZMakpiHp2Vs2Ttn8c6PbuaJPDiYORY8Vyv6zOtgbT5ER8h/Z0oS7IfUfHpjHlgwCc+60oDLXQeQN3rcpNg==","signatures":[{"sig":"MEUCIAS4y4Wr+SUon1lPqohanbjfNcKzfOxuJB165JgOue/oAiEA6X6tZWoI71BFTCNrqkgTvxoOUuvr5R3A6CnxnAlicrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74113},"main":"lib/index.js","types":"lib/index.d.ts","engines":{"node":">=12.x.x"},"gitHead":"38687167822fc27d1a67ac8e31b742ef8f41a97e","scripts":{"lint":"npm run lint:js && npm run lint:ts","test":"jest --watch","build":"rm -r lib || true && tsc","lint:js":"eslint . --cache","lint:ts":"tsc --noEmit","prepare":"npm run build","preversion":"npm run lint & npm run test:nowatch","test:report":"jest --json --outputFile=report.json","test:nowatch":"jest","prepublishOnly":"npm run lint & npm run test:nowatch"},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"repository":{"url":"git+https://github.com/testla-project/testla-screenplay-core-js.git","type":"git"},"_npmVersion":"10.8.2","commitHooks":false,"description":"Framework for an implementation of the Screenplay pattern.","directories":{},"_nodeVersion":"20.19.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.5.0","eslint":"^8.12.0","ts-jest":"^29.0.5","typescript":"^4.6.3","@types/jest":"^29.4.2","@types/node":"^17.0.23","eslint-plugin-react":"^7.32.2","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","@typescript-eslint/parser":"^5.18.0","@typescript-eslint/eslint-plugin":"^5.18.0"},"_npmOperationalInternal":{"tmp":"tmp/screenplay_1.2.1-beta.1_1762506937773_0.4567374826873436","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@testla/screenplay","version":"1.2.1","description":"Framework for an implementation of the Screenplay pattern.","main":"lib/index.js","types":"lib/index.d.ts","commitHooks":false,"scripts":{"build":"rm -r lib || true && tsc","test":"jest --watch","test:nowatch":"jest","test:report":"jest --json --outputFile=report.json","lint:ts":"tsc --noEmit","lint:js":"eslint . --cache","lint":"npm run lint:js && npm run lint:ts","prepare":"npm run build","prepublishOnly":"npm run lint & npm run test:nowatch","preversion":"npm run lint & npm run test:nowatch"},"repository":{"type":"git","url":"git+https://github.com/testla-project/testla-screenplay-core-js.git"},"keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"author":"","license":"MIT","bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","devDependencies":{"@types/jest":"^29.4.2","@types/node":"^17.0.23","@typescript-eslint/eslint-plugin":"^5.18.0","@typescript-eslint/parser":"^5.18.0","eslint":"^8.12.0","eslint-config-airbnb":"^19.0.4","eslint-plugin-import":"^2.26.0","eslint-plugin-react":"^7.32.2","jest":"^29.5.0","ts-jest":"^29.0.5","typescript":"^4.6.3"},"engines":{"node":">=12.x.x"},"publishConfig":{"access":"public"},"gitHead":"b9b6937a44c4913b88abce2dab3fffe604a27d8b","_id":"@testla/screenplay@1.2.1","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-bGer1gTHP33R+qE4VY0vB0EXeCzHIN0/C7N7puhNWJ1QYPa9xvxxYHxi1blTQqiWcOi95AWRFIy86N/6wPmXXA==","shasum":"ccdd933f0de142da6e9a519ddbf843a565251692","tarball":"https://registry.npmjs.org/@testla/screenplay/-/screenplay-1.2.1.tgz","fileCount":33,"unpackedSize":59112,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCELQESX09d/POAU3KaHyFXX1t90oiM5iKR1FuExzFM3QIgOaZ39qkBetQk5i48s35bNQEk2+Tkzah2U3k2tOflhAA="}]},"_npmUser":{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},"directories":{},"maintainers":[{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},{"name":"munichbughunter","email":"munichbughunter@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/screenplay_1.2.1_1763625301171_0.009947938133288536"},"_hasShrinkwrap":false}},"time":{"created":"2022-04-08T13:39:34.893Z","modified":"2025-11-20T07:55:01.601Z","0.1.0-test.1":"2022-04-07T06:48:55.843Z","0.1.0-test.2":"2022-04-07T10:46:59.631Z","0.1.0-test.3":"2022-04-08T09:00:31.249Z","0.1.0-test.4":"2022-04-08T13:21:46.444Z","0.1.0-test.5":"2022-04-08T13:38:23.537Z","0.1.0":"2022-04-08T13:39:35.096Z","0.2.0-test.1":"2022-04-11T09:07:27.468Z","0.2.0-test.2":"2022-04-11T09:16:09.662Z","0.2.0":"2022-04-11T13:42:48.108Z","0.3.0-beta.1":"2023-06-05T10:48:34.356Z","0.3.0":"2023-06-05T12:47:46.598Z","0.4.0":"2024-01-25T08:15:01.402Z","0.4.1":"2024-02-07T08:10:55.147Z","0.5.0":"2024-04-30T07:27:42.274Z","1.0.0":"2024-05-06T15:09:30.169Z","1.1.0-beta.1":"2024-06-17T15:47:21.592Z","1.1.0":"2024-08-13T05:16:05.353Z","1.2.0-beta.1":"2025-07-02T17:09:17.305Z","1.2.0":"2025-07-18T04:47:20.214Z","1.2.1-beta.1":"2025-11-07T09:15:38.041Z","1.2.1":"2025-11-20T07:55:01.357Z"},"bugs":{"url":"https://github.com/testla-project/testla-screenplay-core-js/issues"},"license":"MIT","homepage":"https://github.com/testla-project/testla-screenplay-core-js#readme","keywords":["screenplay","testla","testing","test","tdd","bdd","e2e"],"repository":{"type":"git","url":"git+https://github.com/testla-project/testla-screenplay-core-js.git"},"description":"Framework for an implementation of the Screenplay pattern.","maintainers":[{"name":"kbrueckner","email":"kenji.brueckner@gmail.com"},{"name":"munichbughunter","email":"munichbughunter@gmail.com"}],"readme":"# ![Testla Logo](./doc/assets/testla-logo-32.png) Testla Screenplay\n\n## Introduction\n\nThe testla project is a collection of tools to help in the QA automation process.\ntestla screenplay core defines the frame for an implementation of the Screenplay Pattern.\n\n## Screenplay Pattern Overview\n\nThe Screenplay Pattern is a design pattern for automatic interacting with software products. It can handle any type of interaction - (Web-) UI, API. Test automation is the most popular use case for the pattern. \n\n## The Design\n\nThe Screenplay Pattern can be summarized in one line: Actors use Abilities to perform Interactions. \n- **Actors**, initiate Interactions\n- **Abilities**, enable Actors to initiate Interactions\n- **Interactions** are procedures that exercise the behaviors under test\n  - **Tasks**, executes Actions on the features under test\n  - **Actions**, use Locators, Requests, etc. to interact with the features under Test\n  - **Questions**, return state about the features under test\n\nThe diagram below illustrates how these parts fit together:\n\n![Screenplay Pattern](./doc/assets/screenplay.png)\n\n### Actors and Abilities\n\nThe Screenplay Pattern is a user-centric model with users and external systems interacting with the system under test represented as actors. `Actors` are a key element of the pattern as they are the ones performing the test scenarios.\n\nActors need `abilities` to enable them interacting with any interface of the system. How does it know how to connect your actors to those interfaces? Well, it doesn't unless you tell it, and that's where abilities come into play.\n\n#### Define your own ability\n\n```typescript\nimport { Ability } from '@testla/screenplay';\n\nexport class MyBrowseAbility extends Ability {\n    private constructor(page: Page) {\n        super();\n        this.page = page;\n    }\n    \n    // passing in whatever is required for this ability\n    // in our example a page object from playwright\n    public static using(page: Page): MyBrowseAbility {\n        return new MyBrowseAbility(page);\n    }\n\n    // this function is essential so that the actor can execute\n    // a task/action with this ability\n    public static as(actor: Actor): MyBrowseAbility {\n        return actor.withAbilityTo(this) as MyBrowseAbility;\n    }\n\n    // navigate functionality by using playwright spicific code for our example\n    public async navigate(url: string): Promise<void> {\n        return this.page.goto(url);\n    }\n\n    // fill functionality by using playwright spicific code for our example\n    public async fill(locator: string, value: string): Promise<void> {\n        return this.page.fill(locator, value);\n    }\n\n    // click functionality by using playwright spicific code for our example\n    public async click(locator: string): Promise<void> {\n        return this.page.click(locator);\n    }\n\n    // find functionality by using playwright spicific code for our example\n    public async find(locator: string): Promise<any> {\n        return this.page.waitForSelector(locator);\n    }\n\n    // further implementations\n    // ...\n}\n```\n\n#### Defining an Actor with an Ability\n\nFor example, Ute will interact with the Web UI using the above defined ability. \n\n```typescript\nconst Ute = Actor.named('Ute').can(MyBrowseAbility.using(page));\n```\n\n### Custom Actions\n\n#### How to define a custom action\n\n`Abilities` enable actors to perform `actions` with the system under test. `Actions` are command objects that instruct an actor how to use their abilities to perform the given activity. \n\n```typescript\nimport { Action } from '@testla/screenplay';\n\nexport class Navigate extends Action {\n    // typescript requires class variable definitions\n    private readonly url: string;\n\n    private constructor(url: string) {\n        super();\n        this.url = url;\n    }\n\n    // the actual implementation of the action\n    public performAs(actor: Actor): Promise<any> {\n        return MyBrowseAbility.as(actor).navigate(this.url);\n    }\n\n    // static member method to invoke the action\n    public static to(url: string): Navigate {\n        return new Navigate(url);\n    }\n}\n```\n\n#### How to use the custom action\n\nHere, we instruct Ute to use the action to navigate to a web page. \n\n```typescript\nawait Ute.attemptsTo(Navigate.to('https://example.com'));\n```\n\n### Custom Tasks\n\n#### How to define a custom task\n\n`Tasks` model sequences of activities and help you capture meaningful steps of an actor workflow in your domain. Typically, tasks correspond to higher-level, business domain-specific activities like to `SignUp`, `PlaceATrade`, `TransferFunds`, and so on. \n\n```typescript\nimport { Task } from '@testla/screenplay';\n\nexport class Login extends Task {\n    // the actual implementation of the task\n    public async performAs(actor: Actor): Promise<any> {\n        return actor.attemptsTo(\n            Navigate.to('https://www.my-fancy-url.com'),\n            Fill.with('#username', actor.username || ''),\n            Fill.with('#password', actor.password || ''),\n            Click.on('#login-button'),\n        );\n    }\n\n    // static member method to invoke the task\n    public static toApp(): Login {\n        return new Login();\n    }\n}\n```\n#### How to use the custom task\n\nHere, we instruct Ute to go through the login flow of an app. \n\n```typescript\nawait Ute.attemptsTo(Login.toApp());\n```\n\n### Custom Questions\n\n#### How to define a custom question\n\nApart from enabling interactions, abilities also enable actors to answer questions about the state of the system under test. \n\n```typescript\nimport { Question } from '@testla/screenplay';\n\nexport class LoginStatus extends Question<any> {\n    private constructor(private checkMode: 'toBe' | 'notToBe') {\n        super();\n    }\n    \n    // the actual implementation of the question\n    public async answeredBy(actor: Actor): Promise<any> {\n        let success = false;\n\n        try {\n            await MyBrowseAbility.as(actor).find('#logged-in-indicator');\n            success = true;\n        }\n\n        expect(success).toBe(this.checkMode === 'toBe');\n        return true;\n    }\n\n    static get toBe() {\n        return new LoginStatus('toBe');\n    }\n\n    static get notToBe() {\n        return new LoginStatus('notToBe');\n    }\n\n    public successful(): LoginStatus {\n        return this;\n    }\n}\n```\n\n#### How to use the custom question\n\nFor example, we could instruct Ute to ask the question about the last response status. \n\n```typescript\nawait Ute.asks(LoginStatus.toBe.successful());\n```\n\n### Write your first test\n\n```typescript\nimport { Actor } from \"@testla/screenplay\";\n\ntest.describe('My Test', () => {\n    test('My first test', async ({ page }) => {\n        const ute = Actor.named('Ute')\n            .with('username', 'ute')\n            .with('password', 'ute-password');\n            .can(MyBrowseAbility.using(page));\n\n        await ute.attemptsTo(Login.toApp());\n\n        await ute.asks(LoginStatus.toBe.successful());\n    });\n});\n```\n\n### Proceeding with the test when an action/task fails\n\nYou may have actions or tasks which might (expectedly) fail during the test. An example is to click an element if it is present while it is also fine to proceed with the test when the element is not available.\n\nThis can be achieved as follows:\n\n```javascript\nawait actor.attemptsTo(\n    // this action might fail but the test will continue\n    Click.on('#eventually-available').orSkipOnFail,\n    Click.on('#definitely-available'),\n);\n```\n\n### Use failing questions for test flow controls\n\nIn some cases you may want to ask questions to find out about the status of the system under test to make decisions on how to move on with your test. In order to not fail a test but receive information about questions being answered negative you can use `failAsFalse` on a question which then returns a boolean value instead.\n\n```javascript\n// find out if question was answered with false\nconst wasLoggedIn = await actors.asks(\n    Login.toBe.successful().failAsFalse,\n);\n\n// proceed based on answer from above\nif (wasLoggedIn === false) {\n    // some code to be executed on false case\n}\n```\n\n### Detailed explaination of the internal call flow\n\nTo understand the internal component call flow better please refer to the [flow guide](./doc/flows.md). This guide also provides detailed information about how to use aliases for abilities.\n\n## Logging\n\nTestla comes with logging which helps you to debug your test code. When logging is enabled all activities an actor triggers are logged in a comprehensive way to stdout. To enable logging set the DEBUG environment variable as follows:\n\n```typescript\nDEBUG=testla:sp\n```\n\nTo understand how to enable logging in custom Actions and Questions please refer to the [logging guide](./doc/logging.md).\n\n---\n\n# Credits\nThis library is inspired by the [Screenplay Pattern](https://serenity-js.org/handbook/design/screenplay-pattern/) as described by Jan Molak and the [Serenity/JS](https://serenity-js.org/) implementation of it. ","readmeFilename":"README.md"}