{"_id":"test-automation-framework","_rev":"34-7f49cb0f63d9e8066cbc7d49e3f324d3","name":"test-automation-framework","dist-tags":{"latest":"3.3.2"},"versions":{"2.0.0":{"name":"test-automation-framework","version":"2.0.0","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","mocha":"^10.2.0","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.0.0","gitHead":"bb661114e96138a88baaf9157a35ef78b9789565","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-da4ABBUsNbYo5UxY1H+DNQOC3mrYcIU/u7uGeIefNRLziYyNBwSAq8gGJApoDzaouuUghew/blEZV9A5XUIarA==","shasum":"a5a6cfe1d49284e71165140944f6af926ad03f7a","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.0.0.tgz","fileCount":31,"unpackedSize":17807,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7FMyfo5axGV0A9d3Xlw4+RM7/6ntTXyLsSBHRkZ7vwgIhAKnz5AJTHo3bX8a7WBuwLMNTBOqaADxU7buWrbjELSSJ"}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.0.0_1703335654024_0.9090360076709565"},"_hasShrinkwrap":false},"2.0.1":{"name":"test-automation-framework","version":"2.0.1","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","mocha":"^10.2.0","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.0.1","gitHead":"912099fb941992f4e7d7a24d0158a54c856e9d36","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-B8296tEXzuMwAwyycMRVnRRiOepP3VZir5W5V7dQ70nxszbbe8oPEPgjf0ObGAIApIl4WsXWegMVcnPPs+q2lQ==","shasum":"d6e0c2f964ca6666294c076cc1bfc7f40bea0c97","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.0.1.tgz","fileCount":40,"unpackedSize":21608,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEJg+BNEMbpICawTQa4eXqyocKhfUVcb+fQEvO30fioXAiEA1wTt360nfKTD/JdlNTOUSFoB03PPdK/gG3bDnlYTo3U="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.0.1_1703343469315_0.9064979296751987"},"_hasShrinkwrap":false},"2.0.2":{"name":"test-automation-framework","version":"2.0.2","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","mocha":"^10.2.0","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.0.2","gitHead":"fbdda6fb6b734b63e736d66d0442b2bdcc0ebac3","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-CsQBUEQqr59s2JEY0WHC8sXtkLYwE18f2g7WYtr88YyDCr/Pdy+GCyaQtGj+f8MBQGnu11awV6MveoZFVYVBFw==","shasum":"01409a40ca656bdf169908a027d1b40897d31b41","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.0.2.tgz","fileCount":40,"unpackedSize":23147,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCW10pmhGPdVZ945mSsSyr3TB5uaqqmKb258qbb47IY0gIgUCNMRizffgDJ+pfv4SdqWjReMdlqItnM9/5mgK/aUSk="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.0.2_1703343719772_0.35105730135747826"},"_hasShrinkwrap":false},"2.0.3":{"name":"test-automation-framework","version":"2.0.3","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","mocha":"^10.2.0","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.0.3","gitHead":"fbdda6fb6b734b63e736d66d0442b2bdcc0ebac3","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-l+m7Fpf7bVN+hHSb7n7H3Z708dXsywr0fEf2jvoZ5kzcEzQ4gm087L2B9o22D2scrFdAKd72p6wzCTIu1ZrmoA==","shasum":"ab84f23ae4da9f6b5e6ef34ad8bb31070301909a","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.0.3.tgz","fileCount":40,"unpackedSize":23301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICVo08RHo2gOcBoIPr81MjPI6nTB1RKyW9DN2TSlha3XAiEA7Q8W8YWQTcsEQBJaG3yrHCjHmogzfYNNVvq4YBDX5Xw="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.0.3_1703344172207_0.7721729215904758"},"_hasShrinkwrap":false},"2.1.0":{"name":"test-automation-framework","version":"2.1.0","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","mocha":"^10.2.0","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1","winston":"^3.11.0"},"_id":"test-automation-framework@2.1.0","gitHead":"4f1c06755ee7ed31652085766944e8c625f666cd","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-TWGHMjdk2Fo9eFl1eOnm3yJBDe8PK0UzeS5BnwJfJwmR4WyMFEIcGojRfKP0tZrVpcl88s3Ouybm7qvDr7oyNA==","shasum":"1dd0d0d48d3441f2bd390bad906fbcb05f5c6211","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.1.0.tgz","fileCount":40,"unpackedSize":25413,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBSXCJvlblqdoRJ3B3Pq7yDrRxdJ0MMLu/q5YxWFVnUQIhAJwrxUPxPfKZDSRzMQBNJPbGHGsUFi1phnNqmAXKGids"}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.1.0_1703347587353_0.18302424678551077"},"_hasShrinkwrap":false},"2.2.0":{"name":"test-automation-framework","version":"2.2.0","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'tests/api-graphql/**/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"^4.3.11","@types/mocha":"^10.0.6","@types/node":"^20.10.5","ajv":"^8.12.0","mocha":"^10.2.0","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"@playwright/test":"^1.40.1","chai":"^4.3.10","graphql-request":"^6.1.0","playwright":"^1.40.1","winston":"^3.11.0"},"_id":"test-automation-framework@2.2.0","gitHead":"c1375666267515f2e6eb6feeeae2782d64aadc4e","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-IUZBK7MiNfFdzbVk0IfJYHrKOul1s5vK9uU2Uhv2t/1k4KdxhWyv/8XJsFv/HeaWKR6/hDvv7MplIKw2l5KcsQ==","shasum":"4b596a19f6c310abd3f7bd2aee0bc61ca50e5f81","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.0.tgz","fileCount":46,"unpackedSize":29048,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLppHrRXsf6AfNwG9YAnPstKJMXbl3NO/eQ5z0Qf8FlQIgJTZ47M6XRFeoHYx3hXAJ1WfNmBGwSUau1WBmtEnF9k8="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.0_1703357103455_0.7778617496926243"},"_hasShrinkwrap":false},"2.2.1":{"name":"test-automation-framework","version":"2.2.1","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.1","gitHead":"02dfeda7a8d1bb0104e403206f839db2b72f97e9","types":"./index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-beLbZ/JROd648kr7nBn84NnFY75wTnOcgLh028kfuNFSPeHgwFKVIrDCv8Y7lKpb5z8FGYc4Ep7N4ImWWJXiTg==","shasum":"54b37a233c681acac95d7e33872c9c588e9d4d69","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.1.tgz","fileCount":6,"unpackedSize":10286,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGb8QUKdsyr8+HYayQyNSMrsktdM6qVTL9EJvJp7/+W4AiEAgiksgoJwrhSF5JE1tbpbFRrVKwvJnikoX5nylxu2His="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.1_1703359885883_0.1228850951402598"},"_hasShrinkwrap":false},"2.2.2":{"name":"test-automation-framework","version":"2.2.2","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.2","gitHead":"02dfeda7a8d1bb0104e403206f839db2b72f97e9","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-MDWxBdjDKzTyUlAU/PZM1Kftj7HInkRNNryrkeui5O4QDoEUgW1hs1pnjDG4AbhN1ntukj4imVCHFr0foKAtUw==","shasum":"cbd27d5ea39653d8c1816207b57e90e25a5444f7","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.2.tgz","fileCount":2,"unpackedSize":7579,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgW6IWhgXgvcLUmdpQEiobrC9RvWEILGCIW9tXKXkfUwIgCKh2k7Qd2kYK46SmJZnusurEZ7CXnt1vi9n5hxN49bY="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.2_1703362448765_0.6258583921472278"},"_hasShrinkwrap":false},"2.2.3":{"name":"test-automation-framework","version":"2.2.3","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.3","gitHead":"02dfeda7a8d1bb0104e403206f839db2b72f97e9","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-uGMd5Vson4N6ZKg2ycMEs7ZOpH1AqLIZrAqcVejQmLN0uRGyVqBmmCu09jHE6SkV+9+Ppyj6mK5s6TtAng3hYg==","shasum":"67e9a4e622d56d6bf03f79c25873d3aaa0e05cb6","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.3.tgz","fileCount":21,"unpackedSize":19780,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQypKiPk06eJvED5rtpm7Xcdvd/BJSGNK0jiJY0/lVTAiB5FAXgKoP0NCuFdhfQdaO2GN5AeWZxqwKKHYrZvgrv3Q=="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.3_1703364473066_0.23746434075583212"},"_hasShrinkwrap":false},"2.2.4":{"name":"test-automation-framework","version":"2.2.4","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.4","gitHead":"02dfeda7a8d1bb0104e403206f839db2b72f97e9","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-WPM9RYCZaS7OvsK8wMZra6ILdsAj+NdLThtn7nG+zRIHQooheitZv7aaBrFyY+5BGm+f+4gqCNWyMU4VnddjcA==","shasum":"b5e150aba1a8b048f39a4e1ec6e983fb9558ce69","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.4.tgz","fileCount":22,"unpackedSize":20026,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnGz8SLkPi8nTDQdDx59h230hWbi9zD19Q2gGwQEa0sAIgLRFr2wPGNYedtfAIzYcCxbnohR5gJReTQERdbbj82bc="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.4_1703364738961_0.832256468629345"},"_hasShrinkwrap":false},"2.2.5":{"name":"test-automation-framework","version":"2.2.5","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"index.js","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.5","gitHead":"3b292de8fef6008b5365a0a015abd8cbda9c9052","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-IwrqeQv0HM/jW7wlM97JQDUTab1rj7llkfcS8eKD4SwLbUx6VBKj6Qqa3oO4mw+cXFi95WYvDEwt2bE3VHiFpw==","shasum":"6432182a8dea5978bf8f984b0f132196f3155d1a","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.5.tgz","fileCount":22,"unpackedSize":18999,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIQh1kzFGUgmg0CKTV+CCE7bP6ezzqJTzbY8sGzyVvQAIgFrYgNvEr4//oMZdUz7w8nX9EUNVu/94MHQuG+Bf4qgE="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.5_1703368634222_0.3431699790260483"},"_hasShrinkwrap":false},"2.2.6":{"name":"test-automation-framework","version":"2.2.6","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/example.spec/*.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.6","gitHead":"3b292de8fef6008b5365a0a015abd8cbda9c9052","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-HIPGTho60PBz3TtJB92GvxNBpZk5yl7AEm2wYZ3NO6+JA+Rabrx914VqeXpLVO9573whA8WgTE4LKhkFklfVNw==","shasum":"9adeca4ddfff5fef15661ffa42cfa85ddccba1d7","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.6.tgz","fileCount":22,"unpackedSize":19034,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDjDQfKZUloaMv9vm/PtMIybDZy7sI0L6Yh3aNHNepclAiBNOV7fmnRPSnzumAtT5xBY3nONqcJvaBtXupPy+20v0w=="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.6_1703369956156_0.906893920027668"},"_hasShrinkwrap":false},"2.2.7":{"name":"test-automation-framework","version":"2.2.7","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.7","gitHead":"57290507de808a0d7fc76892becc34bf1cad43d0","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-o4Ew2zYgyteWAVINrMd3qB2A6QO5KlyaZYXOwhy0bHETgVyc9x0YoWMZ2oN4sxqnF8I8+6Yai+yNcUlIgOplEA==","shasum":"ca05d575707e535f453b3e0f9e284ddba071b473","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.7.tgz","fileCount":28,"unpackedSize":19991,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVo/7jPR93PlDNyQdD7uNukDeubi1Er04RdFAETKc5MwIgdLzchfvIjAH+X3hwuQNva3/4qPhRs3hJY8ubHAQT7NU="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.7_1703371155943_0.8571370361718051"},"_hasShrinkwrap":false},"2.2.8":{"name":"test-automation-framework","version":"2.2.8","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.8","gitHead":"57290507de808a0d7fc76892becc34bf1cad43d0","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-2ZgqieJxRfawYJCHTKV8SoL+tQDZbZ4UQ+ODRhHSQEpyDLX3uO1aDsSGis4HDV7JWMCEipeDl5hsIJ+ggIa9iA==","shasum":"b922ee7e6549bc5af4eb416b92957072762d7aef","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.8.tgz","fileCount":28,"unpackedSize":20060,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCn3gFIcZMVqKwwZ4xHuzckRHMGnSnXV5SJxZ+pyXXqZgIgYxZQohVKCb+NwT4frOVKvMROj5611MhMZoOJ2DxijfY="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.8_1703371223971_0.8599231399108733"},"_hasShrinkwrap":false},"2.2.9":{"name":"test-automation-framework","version":"2.2.9","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3"},"dependencies":{"chai":"^4.3.10","graphql-request":"^6.1.0","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.9","gitHead":"57290507de808a0d7fc76892becc34bf1cad43d0","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-Syqqp+BA+S1WAfJwkz5O3kl3peFLbGj+rgQrktmbTUrqcUT6BG5JJeDWqs5EBYQfWUv9q/EJjn6wzeNxLUABww==","shasum":"1068785932b908263ab3a3783e3813a6eea7b44e","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.9.tgz","fileCount":28,"unpackedSize":20060,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOHd1VYuGSz2xO6FO/g2TDfruq/0/iZwgmDuy63w4K5AiEAz6F1+MiiNYnrjRj++VTdCBUGkBMafYeyJeUNhk2003g="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.9_1703371469547_0.6592568859952763"},"_hasShrinkwrap":false},"2.2.10":{"name":"test-automation-framework","version":"2.2.10","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","prettier":"^3.1.1","ts-node":"^10.9.2","typescript":"^5.3.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","browserify-zlib":"^0.2.0","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","stream-http":"^3.2.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.10","gitHead":"9e1f014e6b9fcf22280bb5adc947b367687b44aa","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-2pKQNAS6p9o72LuuDqSmISzK8hRTgY1ze43bqj1UP/4LWNT1WPEC1yCAnkYQxKt/hH3JY9bX0YCwCSRBcr26Rw==","shasum":"11b45614360258b3af9d7abed20eab48f52634b8","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.10.tgz","fileCount":66,"unpackedSize":2094901,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC88Pn09p8tORvp8vAGrDCpzMcGAbFavX7AQoONdA6qpAiEAu9s3w/jLrTlweJDMLUHYHSYomaJSWJDEJgu/qagjv+o="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.10_1703606181535_0.8232652946459802"},"_hasShrinkwrap":false},"2.2.12":{"name":"test-automation-framework","version":"2.2.12","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","bundle":"npx webpack --config webpack.config.js","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.23.6","@babel/preset-env":"^7.23.6","@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","assert":"^2.1.0","babel-loader":"^9.1.3","browserify-zlib":"^0.2.0","core-js":"^3.34.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","prettier":"^3.1.1","stream-browserify":"^3.0.0","stream-http":"^3.2.0","ts-node":"^10.9.2","typescript":"^5.3.3","url":"^0.11.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.12","gitHead":"9fbdfa420febbbcfc6c5ffcc6009fac18b732640","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-SlyIkcBJTNL9K1zkT/IDkJicY6uWzxf+ngc9KtvLMHZVwKst+7CENOPn+tLItPabrcijs/Z61m3XShnad6cvDg==","shasum":"79099d66963a77af96bdfb318dc2471057b4165a","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.12.tgz","fileCount":65,"unpackedSize":2398549,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEEM2LQAYCovz7fncFWZAKMRt55TR7zfwBg32go7Eh8qAiEAyyK9zhT94Ls6beISS6bDb+w/uZ4q8VuUBbPXrPYzj+Q="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.12_1703607154416_0.5350034275734876"},"_hasShrinkwrap":false},"2.2.13":{"name":"test-automation-framework","version":"2.2.13","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","bundle":"npx webpack --config webpack.config.js","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api-graphql":"mocha --require ts-node/register 'example/tests/api-graphql/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.23.6","@babel/preset-env":"^7.23.6","@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","assert":"^2.1.0","babel-loader":"^9.1.3","browserify-zlib":"^0.2.0","core-js":"^3.34.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","prettier":"^3.1.1","stream-browserify":"^3.0.0","stream-http":"^3.2.0","ts-node":"^10.9.2","typescript":"^5.3.3","url":"^0.11.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@2.2.13","gitHead":"490e561b6af2ca90ce5b8bff6c851215aa38f079","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-8hoFE/U3dxhvZSCApMpYgbITz8OLyieCth+O3SZfqPQrumJpyd+zrLcMJ0OTY65fmzgrrwkjcuVPAs+u92C6Ag==","shasum":"da890fb001a31e7ef61bcf64f59fab11d831d763","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-2.2.13.tgz","fileCount":66,"unpackedSize":50280,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC/cqRK1SxH4XRI0jdjvFlKZ20HsyN9bBSXfM4Yv/O37QIgT+Bg7UP4WvYcM9hyYn+4ubyPywMGVli75cNBc8VwW/w="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_2.2.13_1703687011636_0.9806983061725021"},"_hasShrinkwrap":false},"3.3.0":{"name":"test-automation-framework","version":"3.3.0","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","bundle":"npx webpack --config webpack.config.js","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api":"mocha --require ts-node/register 'example/tests/api/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.23.6","@babel/preset-env":"^7.23.6","@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","assert":"^2.1.0","babel-loader":"^9.1.3","browserify-zlib":"^0.2.0","core-js":"^3.34.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","prettier":"^3.1.1","stream-browserify":"^3.0.0","stream-http":"^3.2.0","ts-node":"^10.9.2","typescript":"^5.3.3","url":"^0.11.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@3.3.0","gitHead":"4647e685a9161e01c7894313d81e8a2173314a56","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-nmap3P1rt3Rz8l+2X8eEjHUFNgRtDLQyL0rYqpJQ0hb+69maMk0NIM594vvXKDQeKBBvBLT3CdPv+s2lvqNEbA==","shasum":"c28a4612654658b32e7fa78979f9b75a31ba53ee","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-3.3.0.tgz","fileCount":70,"unpackedSize":60119,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDPNHOHHUD7604Z+uJUegtzzYiXYNKrCZji0S0AVJ2jHQIhAIEDyL6CKdCdoZJGlbN4pp5iWRg1WJIS5HJphU3wJ/nc"}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_3.3.0_1703933133608_0.4098368641893986"},"_hasShrinkwrap":false},"3.3.1":{"name":"test-automation-framework","version":"3.3.1","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","bundle":"npx webpack --config webpack.config.js","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api":"mocha --require ts-node/register 'example/tests/api/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.23.6","@babel/preset-env":"^7.23.6","@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","assert":"^2.1.0","babel-loader":"^9.1.3","browserify-zlib":"^0.2.0","core-js":"^3.34.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","prettier":"^3.1.1","stream-browserify":"^3.0.0","stream-http":"^3.2.0","ts-node":"^10.9.2","typescript":"^5.3.3","url":"^0.11.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@3.3.1","gitHead":"0cacbd7af2d9b286633ddfdacd4c5214fcbb78f1","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-6N2Wk9MY1glu+CNCIzHC4OSIIxNjAvTdYvxin58MY31H3OB0gCfWnGeaL5yK9TXSWaAQm1ZlLFPa0qIEMdaNLQ==","shasum":"fddf4182096a168147aa8f5b4ed1ddb111c9e9c4","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-3.3.1.tgz","fileCount":70,"unpackedSize":62409,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPD+2PgA6uiGdj7lHWQZvATUxaAKIhJ9L0mVmJ1dufJAiAFMOjtytXLOb7eWd93t+5Nr+AVdlEWZBf/jIA/Q5zU+Q=="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_3.3.1_1703933554032_0.70791764393931"},"_hasShrinkwrap":false},"3.3.2":{"name":"test-automation-framework","version":"3.3.2","description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prettify":"npx prettier --write \"**/*.{js,ts}\"","bundle":"npx webpack --config webpack.config.js","build":"tsc","test:e2e":"npm run build && npx playwright test","test:api":"mocha --require ts-node/register 'example/tests/api/**/*.spec.ts'","test:performance:cloud":"k6 cloud","test:performance:local":"k6 run --out json=test_results.json","test:performance:ci":"k6 run --out json=report.json scenarios/*.js"},"keywords":[],"author":"","license":"ISC","devDependencies":{"@babel/core":"^7.23.6","@babel/preset-env":"^7.23.6","@types/chai":"4.3.11","@types/k6":"^0.46.0","@types/mocha":"10.0.6","@types/node":"20.10.5","assert":"^2.1.0","babel-loader":"^9.1.3","browserify-zlib":"^0.2.0","core-js":"^3.34.0","https-browserify":"^1.0.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1","prettier":"^3.1.1","stream-browserify":"^3.0.0","stream-http":"^3.2.0","ts-node":"^10.9.2","typescript":"^5.3.3","url":"^0.11.3","webpack":"^5.89.0","webpack-cli":"^5.1.4"},"dependencies":{"axios":"^0.27.2","buffer":"^6.0.3","chai":"^4.3.10","graphql-request":"^6.1.0","util":"^0.12.5","winston":"^3.11.0"},"peerDependencies":{"@playwright/test":"^1.40.1","ajv":"^8.12.0","mocha":"^10.2.0","playwright":"^1.40.1"},"_id":"test-automation-framework@3.3.2","gitHead":"8e76bff70e8d0a9185d27b8e81738be99010cae0","_nodeVersion":"18.18.0","_npmVersion":"10.2.5","dist":{"integrity":"sha512-iKr/76BKfB5eeHrq5jfv3RGdf4A6dYOTR4gBa5SB4S2WJ3mhdUsUiNbuNv76piNyeiZZJzewuEDpYrncSO2xJg==","shasum":"ec9b0fd6d2a7f8472cb92d3cdbd1c1dfcea3b42e","tarball":"https://registry.npmjs.org/test-automation-framework/-/test-automation-framework-3.3.2.tgz","fileCount":70,"unpackedSize":62292,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRnYaaFxYojvbhK/El0OB0+NxZLUNsbDpmENUIIbq/ggIgXH7TkmvHoRx7a6x0/npyF1V42oGvqFOrWkTy0bzyN8g="}]},"_npmUser":{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"},"directories":{},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/test-automation-framework_3.3.2_1703933689933_0.5405123233286342"},"_hasShrinkwrap":false}},"time":{"created":"2023-12-23T12:47:34.023Z","2.0.0":"2023-12-23T12:47:34.200Z","modified":"2023-12-30T10:54:50.304Z","2.0.1":"2023-12-23T14:57:49.514Z","2.0.2":"2023-12-23T15:01:59.938Z","2.0.3":"2023-12-23T15:09:32.425Z","2.1.0":"2023-12-23T16:06:27.536Z","2.2.0":"2023-12-23T18:45:03.683Z","2.2.1":"2023-12-23T19:31:26.113Z","2.2.2":"2023-12-23T20:14:08.933Z","2.2.3":"2023-12-23T20:47:53.276Z","2.2.4":"2023-12-23T20:52:19.111Z","2.2.5":"2023-12-23T21:57:14.425Z","2.2.6":"2023-12-23T22:19:16.321Z","2.2.7":"2023-12-23T22:39:16.117Z","2.2.8":"2023-12-23T22:40:24.139Z","2.2.9":"2023-12-23T22:44:29.740Z","3.0.0":"2023-12-26T14:50:51.984Z","3.0.1":"2023-12-26T14:55:25.576Z","3.0.2":"2023-12-26T14:57:39.222Z","3.0.3":"2023-12-26T15:36:19.138Z","3.0.4":"2023-12-26T15:49:56.865Z","3.0.5":"2023-12-26T15:51:59.831Z","2.2.11":"2023-12-26T15:53:06.177Z","2.2.10":"2023-12-26T15:56:21.813Z","2.2.12":"2023-12-26T16:12:34.674Z","2.2.13":"2023-12-27T14:23:31.805Z","3.3.0":"2023-12-30T10:45:33.809Z","3.3.1":"2023-12-30T10:52:34.272Z","3.3.2":"2023-12-30T10:54:50.122Z"},"maintainers":[{"name":"mohsen_ny","email":"mohsen.n89@gmail.com"}],"description":"This Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple pr","keywords":[],"license":"ISC","readme":"# Test Automation Framework\r\n\r\nThis Test Automation Framework is a comprehensive solution for implementing automated tests across various domains, including end-to-end, API, and performance testing. It's designed to provide a standardized and scalable approach to testing in multiple projects.\r\n\r\n### Installation\r\n\r\nTo install the framework in your project, use npm:\r\n\r\n```bash\r\nnpm install test-automation-framework\r\n```\r\n\r\n### Usage\r\n\r\nThe framework is divided into modules, each targeting different testing needs:\r\n\r\n---\r\n\r\n## Module 1: End-to-End Testing with Playwright (`/e2e`)\r\n\r\nThis module leverages Playwright for end-to-end testing and implements the Page Object Model (POM) for maintainability and readability.\r\n\r\n### Extending the BasePage\r\n\r\n`BasePage` is the foundational class for creating page-specific classes. Extend `BasePage` for each page in your application with relevant selectors and methods.\r\n\r\n**Example: SearchPage**\r\n\r\n```typescript\r\nimport { Page } from 'playwright';\r\nimport { BasePage } from 'test-automation-framework';\r\n\r\nexport class SearchPage extends BasePage {\r\n    private searchFieldSelector: string;\r\n    \r\n    constructor(page: Page) {\r\n        super(page, '/search');\r\n        this.searchFieldSelector = '#searchbox_input';\r\n    }\r\n    \r\n    async search(searchKeyword: string): Promise<void> {\r\n        await this.page.fill(this.searchFieldSelector, searchKeyword);\r\n        await this.page.keyboard.press('Enter');\r\n    }\r\n}\r\n```\r\n\r\n**Example: ResultsPage**\r\n\r\n```typescript\r\nimport { Page } from 'playwright';\r\nimport { BasePage } from 'test-automation-framework';\r\n\r\nexport class ResultsPage extends BasePage {\r\n    private resultsSelector: string;\r\n    \r\n    constructor(page: Page) {\r\n        super(page, '/results');\r\n        this.resultsSelector = '#results';\r\n    }\r\n    \r\n    getDuckBar(): Locator {\r\n        return this.page.locator(this.duckBarSelector);\r\n    }\r\n}\r\n```\r\n\r\n### Using BasePageProvider\r\n\r\n`BasePageProvider` manages multiple page objects, allowing easy access within test cases.\r\n\r\n**Example Usage of `BasePageProvider`**\r\n\r\n```typescript\r\nimport { Browser, Page } from 'playwright';\r\nimport { BasePageProvider } from 'test-automation-framework';\r\nimport { SearchPage } from './SearchPage';\r\nimport { ResultsPage } from './ResultsPage';\r\n\r\nexport class PageProvider extends BasePageProvider {\r\n    constructor(browser: Browser, page: Page) {\r\n        super(browser, page);\r\n        this.registerPageObject('search', SearchPage);\r\n        this.registerPageObject('results', ResultsPage);\r\n    }\r\n\r\n    getSearchPage(): SearchPage {\r\n        return this.getPageObject<SearchPage>('search');\r\n    }\r\n\r\n    getResultsPage(): ResultsPage {\r\n        return this.getPageObject<ResultsPage>('results');\r\n    }\r\n}\r\n```\r\n\r\n**Example Test Using `BasePageProvider`**\r\n\r\n```typescript\r\nimport { test, expect } from '@playwright/test';\r\nimport { PageProvider } from '../src/pages/PageProvider';\r\n\r\ntest.describe('Search', () => {\r\n    let provider: PageProvider;\r\n\r\n    test.beforeEach(async ({ browser, page }) => {\r\n        provider = new PageProvider(browser, page);\r\n    });\r\n\r\n    test('Should search for \\'Potato\\' and see relevant results', async () => {\r\n        const searchPage = provider.getSearchPage();\r\n        const resultsPage = provider.getResultsPage();\r\n\r\n        await searchPage.navigateToPage();\r\n        await searchPage.search('Potato');\r\n        await expect(ResultsPage.getDuckBar()).toBeVisible()\r\n    });\r\n});\r\n```\r\n\r\n## Module 2: API Testing with GraphQL (`/api/graphql`)\r\n\r\nThis module provides the necessary tools for testing GraphQL APIs, including a GraphQL client helper for sending requests and handling responses.\r\n\r\nFirst, create a `config.ts` for the API test configurations:\r\n\r\n```typescript\r\nimport { PackageConfig } from 'your-package/config';\r\n\r\nexport const apiTestsConfig: ApiTestsConfig = {\r\n    graphqlApiUrl: \"https://countries.trevorblades.com/\",\r\n    // restApiUrl: \"another URL for rest API testing?\",\r\n    // apiKey: \"your-api-key\",\r\n};\r\n\r\n```\r\n\r\nThen, create a testData directory per test suit/scenario, containing the test data in a file within that directory:\r\n\r\n```bash\r\ntests/scneario-one/test-example.spec.ts\r\ntests/scenario-one/testData/test-example.testdata.ts\r\n```\r\n\r\n`test-example.testdata.ts` would contain and export the needed test data for your tests:\r\n\r\n```typescript\r\nexport const sampleQueries = {\r\n    getCountries: `\r\n        query {\r\n        countries {\r\n            code\r\n            name\r\n        }\r\n        }\r\n    `,\r\n    getCountry: `\r\n        query getCountry($code: ID!) {\r\n        country(code: $code) {\r\n            code\r\n            name\r\n            native\r\n            capital\r\n            currency\r\n        }\r\n        }\r\n    `,\r\n    invalidQuery: `query { invalidField }`,\r\n};\r\n  \r\nexport const sampleVariables = {\r\n    countryVariables: { code: 'BR' },\r\n};\r\n  \r\n```\r\n\r\nYou would also need a `types` directory that contains both the types needs by your tests, as well as the schema to compare and assert the API responses against.\r\nAs a result, the structure of your tests would look like below:\r\n\r\n```text\r\n├───config.ts\r\n│\r\n├───example.spec\r\n│   │   GraphQLCountryTest.spec.ts\r\n│   │\r\n│   └───testData\r\n│           GraphQLTestExample.testdata.ts\r\n│\r\n└───types\r\n        graphqlTypes.ts\r\n        schemas.ts\r\n```\r\n\r\nFinally, end this is how your test would look like:\r\n\r\n\r\n```typescript\r\nimport { expect } from 'chai';\r\nimport { GraphQLClientHelper } from 'test-automation-framework';\r\nimport { sampleQueries, sampleVariables } from './testData/GraphQLTestExample.testdata';\r\nimport { graphqlTestsConfig } from '../config';\r\nimport { CountriesData, CountryData } from '../types/graphqlTypes';\r\nimport {\r\n    countriesResponseSchema,\r\n    countryResponseSchema,\r\n  } from '../types/schemas';\r\n\r\ndescribe('GraphQL Country API Tests', () => {\r\n  const client = new GraphQLClientHelper(graphqlTestsConfig.apiUrl);\r\n\r\n  before(() => {\r\n    client.setHeaders({ Authorization: `Bearer ${graphqlTestsConfig.apiKey}` });\r\n  });\r\n\r\n  it(\"should fetch countries data correctly\", async () => {\r\n    const data = await client.sendQuery<CountriesData>(\r\n      sampleQueries.getCountries,\r\n      undefined,\r\n      countriesResponseSchema,\r\n    );\r\n    expect(data.countries).to.be.an(\"array\");\r\n    expect(data.countries.length).to.be.greaterThan(0);\r\n  });\r\n\r\n  it(\"should fetch a specific country\", async () => {\r\n    const data = await client.sendQuery<CountryData>(\r\n      sampleQueries.getCountry,\r\n      sampleVariables.countryVariables,\r\n      countryResponseSchema,\r\n    );\r\n    expect(data.country).to.be.an(\"object\");\r\n    expect(data.country.name).to.equal(\"Brazil\");\r\n  });\r\n\r\n  it(\"should handle errors gracefully\", async () => {\r\n    try {\r\n      await client.sendQuery(sampleQueries.invalidQuery, undefined, null); // No schema needed for invalid queries\r\n      throw new Error(\"Expected an error but none was thrown\");\r\n    } catch (error) {\r\n      expect(error).to.be.an.instanceOf(Error);\r\n      expect((error as Error).message).to.include(\"Cannot query field\");\r\n    }\r\n  });\r\n});\r\n```\r\n\r\n## Modules 3: REST API Testing (`/api/rest`)\r\n\r\nThis module provides tools and setups for testing REST APIs using JSONPlaceholder as an example. It includes a REST API client helper for sending requests and handling responses.\r\n\r\n### Configuration\r\n\r\nCreate an `example.config.ts` file in the `api/config` directory for REST API test configurations:\r\n\r\n```typescript\r\nimport { ApiTestsConfig } from \"../../../../src/api/config/types\";\r\n\r\nexport const apiTestsConfig: ApiTestsConfig = {\r\n    restApiUrl: \"https://countries.trevorblades.com/\",\r\n    // graphqlApiUrl: \"another URL for graphql API testing?\",\r\n    // apiKey: \"your-api-key\",\r\n};\r\n```\r\n\r\n### Defining Endpoints\r\n\r\nDefine your API endpoints in the `api/endpoints` directory:\r\n\r\n```typescript\r\n// example/tests/api/endpoints/endpoints.ts\r\nexport const postEndpoints = {\r\n    getPosts: '/posts',\r\n    getPost: '/posts/1', // Endpoint to fetch a specific post\r\n    invalidEndpoint: '/invalidEndpoint', // Example of an invalid endpoint\r\n};\r\n```\r\n\r\n### Writing Tests\r\n\r\nWrite your REST API tests in the `api/rest` directory. Here's an example of how to structure and write a REST API test:\r\n\r\n```typescript\r\n// example/tests/api/rest/posts.spec.ts\r\nimport { expect } from 'chai';\r\nimport { RestApiClientHelper } from 'test-automation-framework';\r\nimport { postEndpoints } from '../endpoints/endpoints';\r\nimport { apiTestsConfig } from '../config';\r\nimport { Post, postsResponseSchema } from '../types/requestTypes';\r\nimport { postResponseSchema } from '../types/responseTypes';\r\n\r\ndescribe(\"REST API Posts Tests\", () => {\r\n    const client = new RestApiClientHelper(apiTestsConfig.restApiUrl);\r\n\r\n    it(\"should fetch posts correctly\", async () => {\r\n        const posts: Post[] = await client.sendRequest('get', postEndpoints.getPosts, undefined, postsResponseSchema);\r\n        expect(posts).to.be.an('array');\r\n        expect(posts.length).to.be.greaterThan(0);\r\n    });\r\n\r\n    // Additional test cases...\r\n});\r\n```\r\n\r\n### Directory Structure for REST API Tests\r\n\r\nThe structure for REST API tests is organized as follows:\r\n\r\n```text\r\n├───api\r\n│   ├───config\r\n│   │   │   example.config.ts\r\n│   │   │\r\n│   ├───endpoints\r\n│   │   │   endpoints.ts\r\n│   │   \r\n│   ├───rest\r\n│   │   └───posts.spec\r\n│   │       │   posts.spec.ts\r\n│   │       \r\n│   └───types\r\n│       │   requestTypes.ts\r\n│       │   responseTypes.ts\r\n```\r\n\r\n\r\n## Modules 4: Performance Testing with k6 (`/performance`)\r\n\r\nOur framework integrates performance testing using k6, a powerful tool for load testing. Due to k6's limitations in importing npm modules, this module relies on direct imports of raw files from this repository in the consumer's k6 scripts.\r\n\r\n### IMPORTANT DISCLAIMER: K6 Limitations\r\nIn the realm of performance testing with k6, there are specific limitations that we need to acknowledge and work around. Firstly, k6 is designed to execute JavaScript (.js) files exclusively. This inherent design choice means that TypeScript files are not directly supported. As a consequence of this limitation, our performance testing scripts are written directly in JavaScript rather than TypeScript. This approach allows us to leverage the full capabilities of k6 without the complexities introduced by a transpilation step from TypeScript to JavaScript.\r\n\r\nFurthermore, k6 intentionally restricts the import of Node.js modules. This design decision is primarily to prevent complications with the internal memory usage of the Virtual Users (VUs) that k6 generates during tests. Such restrictions ensure that the performance tests are lean and more closely simulate real-world user interaction scenarios. Due to this limitation, any necessary modules or libraries that are not natively supported by k6 must be imported via HTTP(S) from external sources, such as GitHub's raw content. This method of importing ensures that the necessary functionalities are accessible without the need for npm publishing of performance modules, which in our case would be redundant and inefficient.\r\n\r\nFor instance, in our consumer-side performance tests (located at tests/performance/requests/jsonPlaceholder.js), we import modules like defaultHeader, handleResponseError, and parseJsonResponse directly from the hosted JavaScript files on GitHub:\r\n\r\n```javascript\r\nimport { defaultHeader, handleResponseError, parseJsonResponse } from 'https://raw.githubusercontent.com/mohsenny/test-automation-framework/main/dist/src/perfomrance/index.js';\r\n\r\nexport const getPosts = () => {\r\n    // Test implementation\r\n};\r\n```\r\n\r\n### Configuring Performance Tests\r\n\r\nA `config/configure.js` file is provided to manage environment variables essential for running the tests. This file contains common mandatory environment variables applicable across different projects. Additional project-specific environment variables can be added on the consumer side as needed.\r\n\r\n### Writing Performance Tests\r\n\r\nAll performance tests should be written in JavaScript, as k6 does not smoothly support TypeScript. This ensures compatibility with k6's runtime environment and its import mechanism.\r\n\r\n### How to Use\r\n\r\nImport the necessary scripts directly from the raw GitHub content in your k6 test scripts. This allows you to leverage the latest updates and functionalities of the performance testing module without npm module dependencies.\r\n\r\n### Configuration (`/config`)\r\n\r\nDefine load stages in `load.ts`:\r\n\r\n```javascript\r\n// config/load.ts\r\nexport const loads = {\r\n  // Define your load configurations here\r\n  performance: {\r\n    jsonPlaceholder: {\r\n      getPosts: [{ target: 5, duration: \"20s\" }],\r\n      // Additional scenarios\r\n    },\r\n  },\r\n  // Other environments like 'sanity'\r\n};\r\n\r\n// Function to retrieve the appropriate load configuration\r\nexport function get(env) { /* ... */ }\r\n```\r\n\r\nCustomize environment-specific settings in `customConfig.ts`:\r\n\r\n```javascript\r\n// config/customConfig.ts\r\nexport const customOptions = {\r\n  // Define your custom options here\r\n  host: getEnvVariable(\"MY_HOSTNAME\"),\r\n  // ...\r\n};\r\n```\r\n\r\n### Endpoints (`/requests`)\r\n\r\nDefine API endpoints:\r\n\r\n```javascript\r\n// requests/endpoints.ts\r\nexport const list = {\r\n  jsonPlaceholderPosts: {\r\n    getPosts: `${customOptions.host}/posts`,\r\n    // Additional endpoints\r\n  },\r\n};\r\n```\r\n\r\nImplement request functions:\r\n\r\n```javascript\r\n// requests/jsonPlaceholder.ts\r\nexport const getPosts = () => {\r\n  // Function to fetch posts\r\n};\r\n\r\nexport const createPost = (payload) => {\r\n  // Function to create a post\r\n};\r\n```\r\n\r\n### Scenarios (`/scenarios`)\r\n\r\nWrite test scenarios using the defined requests and configurations:\r\n\r\n```javascript\r\n// scenarios/example.spec/jsonPlaceholder.ts\r\nimport { sleep, group } from \"k6\";\r\nimport * as jsonPlaceholderRequests from \"../../requests/jsonPlaceholder.js\";\r\n\r\nexport default function () {\r\n  group(\"Get all Posts\", () => {\r\n    jsonPlaceholderRequests.getPosts();\r\n    sleep(1);\r\n  });\r\n\r\n  // Additional test groups\r\n};\r\n```\r\n\r\n### Setup Scripts (`/setup`)\r\n\r\nUse `ci.sh`, `local.ps1`, and `local.sh` for setting up test environments and execution.\r\n\r\n### Types (`/types`)\r\n\r\nDefine types for requests and responses in TypeScript for better code structure and understanding.\r\n\r\n### Contributing\r\n\r\nContributions to this framework are welcome! If you'd like to contribute, please submit a pull request or open an issue for discussion.","readmeFilename":"README.md"}