{"_id":"@aj-shadow/actorjs-app","_rev":"9-d44319eebb6d7b338aa19b4cfaba6a45","name":"@aj-shadow/actorjs-app","dist-tags":{"latest":"0.0.0-aj-beta.227"},"versions":{"0.0.0-aj-beta.221":{"name":"@aj-shadow/actorjs-app","version":"0.0.0-aj-beta.221","author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@aj-shadow/actorjs-app@0.0.0-aj-beta.221","maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"dist":{"shasum":"b565d2495d2ffeab00c036fc60dbb40376225d90","tarball":"https://registry.npmjs.org/@aj-shadow/actorjs-app/-/actorjs-app-0.0.0-aj-beta.221.tgz","fileCount":423,"integrity":"sha512-sh0lhQgJ1PJPWsr7ARDmtmL5PgFFr+LnOm58Jt2Hfhrab4A+oaZvh+LaeTmAPRJMApKtIPHENp8Juj/qzMP0Ag==","signatures":[{"sig":"MEYCIQCmOx4Max5kF49Gara+nd3QuvAXk4754Gdro3lZPLrAOwIhANmSGfNSxegSjx/oJ8s8XvNiNHjDLfkFKcw7JRsOu8rM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1360757},"folder":"actorjs","gitHead":"0ec5447c977bd3e62a347475bfb9011341f093b8","scripts":{"postinstall":"node -e \"try{require('./npm-post-install.js')}catch(e){console.log(e);}\""},"_npmUser":{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"},"longname":"actorjs","shortname":"aj","repository":{"url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git","type":"git"},"_npmVersion":"11.6.2","description":"Library used by @aj-shadow/actorjs","directories":{},"_nodeVersion":"25.2.1","dependencies":{},"release-step":"delivery","_hasShrinkwrap":true,"_npmOperationalInternal":{"tmp":"tmp/actorjs-app_0.0.0-aj-beta.221_1774465727845_0.8047581560202015","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-aj-beta.224":{"name":"@aj-shadow/actorjs-app","version":"0.0.0-aj-beta.224","author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@aj-shadow/actorjs-app@0.0.0-aj-beta.224","maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"dist":{"shasum":"3bc9b560c2d3e177c0f60d868721b09167ab9109","tarball":"https://registry.npmjs.org/@aj-shadow/actorjs-app/-/actorjs-app-0.0.0-aj-beta.224.tgz","fileCount":423,"integrity":"sha512-RsV4nuze+lA4lNf1pIpooOgBA8ER9CgxzswebXaKAfsU+1G00Cf11oYsp8H9vOLI/fXaYeg0PUIuUlywMYI9AA==","signatures":[{"sig":"MEUCIQC6XvexDICWLs+bhUa8SBH4a20W65qLwafDU5qQZQW2gwIgW37XnLVI1m1AInbZD3tuipwcYtOKG74iy5SnEeMQ+x0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1360875},"folder":"actorjs","gitHead":"853a7f61d8dcdbe59bc2f274bfbbea88d346eb49","scripts":{"postinstall":"node -e \"try{require('./npm-post-install.js')}catch(e){console.log(e);}\""},"_npmUser":{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"},"longname":"actorjs","shortname":"aj","repository":{"url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git","type":"git"},"_npmVersion":"11.6.2","description":"Library used by @aj-shadow/actorjs","directories":{},"_nodeVersion":"25.2.1","dependencies":{},"release-step":"delivery","_hasShrinkwrap":true,"_npmOperationalInternal":{"tmp":"tmp/actorjs-app_0.0.0-aj-beta.224_1774800612708_0.1538342726347175","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-aj-beta.225":{"name":"@aj-shadow/actorjs-app","version":"0.0.0-aj-beta.225","author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@aj-shadow/actorjs-app@0.0.0-aj-beta.225","maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"dist":{"shasum":"ccff7bb577fa47f8348e26605ddb546b32843c6b","tarball":"https://registry.npmjs.org/@aj-shadow/actorjs-app/-/actorjs-app-0.0.0-aj-beta.225.tgz","fileCount":423,"integrity":"sha512-9QEfHufaRvXkG/1lXB8VJp5jTdyC5wBCMUuti7x8wP73XVYlBqz9t8G8U7NFBKV7YTpFRAmpdfgUtXuBbOrPjw==","signatures":[{"sig":"MEUCIQDTcttba6dmO7XnGMK02xFC/cKMWCzrGJU78n1Wc/D9nwIgCZ2wxr/eFiI4vzI1RMe+ehgvPjqN3UGWeIHkfUK1e2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1360875},"folder":"actorjs","gitHead":"eef855b77fb4505d5d28ff2076c233f835ca0502","scripts":{"postinstall":"node -e \"try{require('./npm-post-install.js')}catch(e){console.log(e);}\""},"_npmUser":{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"},"longname":"actorjs","shortname":"aj","repository":{"url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git","type":"git"},"_npmVersion":"11.6.2","description":"Library used by @aj-shadow/actorjs","directories":{},"_nodeVersion":"25.2.1","dependencies":{},"release-step":"delivery","_hasShrinkwrap":true,"_npmOperationalInternal":{"tmp":"tmp/actorjs-app_0.0.0-aj-beta.225_1774801874952_0.9126886895277737","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-aj-beta.226":{"name":"@aj-shadow/actorjs-app","version":"0.0.0-aj-beta.226","author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","_id":"@aj-shadow/actorjs-app@0.0.0-aj-beta.226","maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"dist":{"shasum":"563f88894659d331c221afe41c8be21df8551ca3","tarball":"https://registry.npmjs.org/@aj-shadow/actorjs-app/-/actorjs-app-0.0.0-aj-beta.226.tgz","fileCount":423,"integrity":"sha512-uAPbvf0uQzVYsLItVSs2KXv6ioaMEOElYMXXLZwZgRbM1Ffkof1XC2ZkeY4+zrQJ8Y/dgFg4JvXv1LQpGKWlOQ==","signatures":[{"sig":"MEUCIGEMBHErSmQot89MzQo9ybvR3d6TYmhLAI3DErIUiJfLAiEA8Yh57R3f6yTk26DLnaAU6kSkOohHPLLrCXCWxSgy9uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1360875},"folder":"actorjs","gitHead":"f666774c5d7457802d75180ed1e445ba549e6a94","scripts":{"postinstall":"node -e \"try{require('./npm-post-install.js')}catch(e){console.log(e);}\""},"_npmUser":{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"},"longname":"actorjs","shortname":"aj","repository":{"url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git","type":"git"},"_npmVersion":"11.6.2","description":"Library used by @aj-shadow/actorjs","directories":{},"_nodeVersion":"25.2.1","dependencies":{},"release-step":"delivery","_hasShrinkwrap":true,"_npmOperationalInternal":{"tmp":"tmp/actorjs-app_0.0.0-aj-beta.226_1774808496213_0.460131585596939","host":"s3://npm-registry-packages-npm-production"}},"0.0.0-aj-beta.227":{"name":"@aj-shadow/actorjs-app","version":"0.0.0-aj-beta.227","shortname":"aj","longname":"actorjs","folder":"actorjs","release-step":"delivery","description":"Library used by @aj-shadow/actorjs","author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","scripts":{"postinstall":"node -e \"try{require('./npm-post-install.js')}catch(e){console.log(e);}\""},"dependencies":{},"repository":{"type":"git","url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git"},"gitHead":"7d1de41cfc46185d55d190a50d1a7c9b14e50242","_id":"@aj-shadow/actorjs-app@0.0.0-aj-beta.227","bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-r/2WXukWV6s6m5uXlYM0QE8iBHIiZMszEAmkMT3Sva+5Tbs7pE7KO9SHwpNdaTv9LEBBwQhgD5DPiIHF7UhbQA==","shasum":"c8b1bd47d6f102ce644cf1ebe6a0c17598388788","tarball":"https://registry.npmjs.org/@aj-shadow/actorjs-app/-/actorjs-app-0.0.0-aj-beta.227.tgz","fileCount":423,"unpackedSize":1360875,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICnnIpLklZ5/pdslZR/yANkQUWhL8LxXc/kpMxiE1iKTAiEA8dbMp7MMc+yVJbvCP7Fy+TALH834vPERVyt6t1dWOgA="}]},"_npmUser":{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"},"directories":{},"maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/actorjs-app_0.0.0-aj-beta.227_1774815579520_0.0848751187184873"},"_hasShrinkwrap":true}},"time":{"created":"2026-03-25T19:08:47.744Z","modified":"2026-03-29T20:19:39.843Z","0.0.0-aj-beta.219":"2026-03-16T00:16:06.943Z","0.0.0-aj-beta.220":"2026-03-16T18:40:04.536Z","0.0.0-aj-beta.221":"2026-03-25T19:08:53.021Z","0.0.0-aj-beta.224":"2026-03-29T16:10:12.907Z","0.0.0-aj-beta.225":"2026-03-29T16:31:15.250Z","0.0.0-aj-beta.226":"2026-03-29T18:21:36.366Z","0.0.0-aj-beta.227":"2026-03-29T20:19:39.732Z"},"bugs":{"url":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app/issues"},"author":{"name":"ActorJs"},"license":"SEE LICENSE IN LICENSE.txt","homepage":"https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app#readme","repository":{"type":"git","url":"git+https://gitlab.com/actorjs-shadow-delivery-public/actorjs-app.git"},"description":"Library used by @aj-shadow/actorjs","maintainers":[{"name":"jens.hagnell","email":"jens.patric.hagnell@gmail.com"}],"readme":"# ActorJs\r\nActorJs is a tool for end-to-end testing that you run in a browser.\r\n\r\n### Trigger, mock, and intercept anything.\r\nActorJs simulates all processes and services surrounding a System Under Test, allowing you to isolate a System Under Test in a very efficient way, no matter how many surrounding systems or protocols the System Under Test needs to use. You create Actors (very small simulators) that use stacks for communication.\r\n\r\n## Prerequisites\r\n[Nodejs](https://nodejs.org/en/) &#8211; 20.x.x or later\r\n[Git](https://git-scm.com/) &#8211; 2.26.0 or later\r\n\r\n## Install ActorJs\r\n\r\n```bash\r\nnpm install @actorjs/actorjs\r\n```\r\n\r\n## Update ActorJs\r\n```bash\r\nnpm update\r\n```\r\n\r\n## Build ActorJs Server\r\n```bash\r\naj release\r\n```\r\n\r\nIf you make changes to files, but ActorJs has not been started, or if you pull updates from your local repos, you must build the server again using **aj release**. Otherwise, just use **aj** to start ActorJs.\r\n\r\n**Linux &amp; Mac**: To use the command **aj**, an alias is needed for the *actorjs.sh* file in the installation folder. During installation, aliases are added to *.bashrc* (Linux and Mac) and *.zshrc* (Mac). If you use another shell, you have to add the alias yourself. The first time you install ActorJs, you need to restart the terminal or **source** the file containing the alias, for instance:\r\n```\r\nsource ~/.bashrc\r\n```\r\n\r\n## Start ActorJs Client\r\nOpen a browser with the url http://localhost:9005\r\n\r\n## Documentation\r\n* [https://actorjs.com/documentation](https://actorjs.com/documentation)\r\n\r\n## Further reading in the ActorJs tool\r\nThe ActorJs documentation can be found in the tool. To access it, click the following links when the tool is running.\r\n* [Documentation](http://localhost:9005/documentation)\r\n* [Education](http://localhost:9005/education)\r\n\r\n## Example code\r\n\r\n### HTTP - server\r\n```js\r\n*run() {\r\n  this.httpConnection.send(new HttpMsgGetRequest(this.requistUri));\r\n    \r\n  const response = this.httpConnection.receive();\r\n  VERIFY_VALUE(HttpApi.StatusCode.OK, response.statusCode, ' HTTP response line status code:');\r\n  VERIFY_CONTENT_OPTIONAL('content-name', response.getHeaderNumber(HttpApi.Header.CONTENT_LENGTH), response.getBody());\r\n}\r\n```\r\n\r\n### Websocket - client\r\n```js\r\n*run() {\r\n  this.httpConnection.send(new HttpGetUpgradeRequest(this.requistUri, this.wsProtocol));\r\n \r\n  const response = this.httpConnection.receive();\r\n  this.websocketConnection = this.switchProtocol('websocket', this.httpConnection);\r\n    \r\n  this.websocketConnection.send(new WebsocketStackApi.TextFrame(this.wsText, this.wsMask));\r\n  this.websocketConnection.send(new WebsocketStackApi.CloseFrame());\r\n}\r\n```\r\n\r\n### Puppeteer - client\r\n```js\r\n*run() {\r\n  const page = this.puppeteerConnection.page;\r\n  yield page.click('.w-button');\r\n}\r\n```\r\n\r\n### Socket - server\r\n```js\r\n*run() {\r\n  this.socketConnection.accept();\r\n  const request = this.socketConnection.receiveLine();\r\n  VERIFY_VALUE('Hello World!', request)\r\n}\r\n```\r\n","readmeFilename":"README.md"}