{"_id":"@civitas-cerebrum/element-repository","_rev":"20-07e4db6b116b1b553e17e0d1930ae2d8","name":"@civitas-cerebrum/element-repository","dist-tags":{"latest":"0.3.2"},"versions":{"0.0.5":{"name":"@civitas-cerebrum/element-repository","version":"0.0.5","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.0.5","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"28f43eeb173ad2cdffe8823cd6d3d3d102164b37","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.0.5.tgz","fileCount":14,"integrity":"sha512-cJNElHU+pUH8Aj+Ptl7CglUWcTdmXiIbg6rOpGQvISaRkgedx1khzcz0RUtD9ZiDI7nCKckO/apvgFSa2niJzA==","signatures":[{"sig":"MEYCIQD8GfnSCHNAyVvw/WdvW0ivDL77QwHCoAPqNDkFZkts7wIhANL1haja9xxubs0PAXeJ8kxvjJR56llen56IvhBcu6QZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34688},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2f5f568fae6488d0b95b7e411e6c36bc00b4cc80","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your Playwright UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@playwright/test":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.0.5_1774259209347_0.7529188203023207","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@civitas-cerebrum/element-repository","version":"0.0.6","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.0.6","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"7c5843f2b555c9f0479ac5ff5a0e0194f1414ce1","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.0.6.tgz","fileCount":14,"integrity":"sha512-fPPMbJ8PGgwDfpWRoR7fDnXEdkRGxyp+3Rcl4uVjNzmHgPjjbkMDJw3V6m16SsEjnEpMCiW1FIQndP7shUoypg==","signatures":[{"sig":"MEQCIHZlnuLcY+WaAlcEtj3DBJ5aYPwqvzy+NARTaglC6h4CAiBc4Xge/KRPf6AJZYCSDe+jZYkpb5WqdozvFIL1AXkuGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":34748},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1bf9b62a3c2eeacd7f8bc7b5c1b4998d21e7637b","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your Playwright UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@playwright/test":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.0.6_1774263428567_0.4970378653311125","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@civitas-cerebrum/element-repository","version":"0.0.7","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.0.7","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"889864eccf9e63d9e99afa61cf8bf464750857ae","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.0.7.tgz","fileCount":16,"integrity":"sha512-wHrwNFPR5K7BM+j468GeR0oeJ6ZrrhotUV3Xk04FOD+8ZwkwRtNcMi417mLpMHeXvtFIgUSws/1FuX90sU7itg==","signatures":[{"sig":"MEYCIQDJ48G5W2BbTPXDrWusSrtno88FYGCqN/YdwPxtxHq78AIhAMoWlaZIFBJ6EMy5EVCbortcnn0HpgLMVadV51SEa9In","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51456},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"79a42949e6b059b9b6359e42cdaae257e6196da7","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your Playwright UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"webdriverio":"^9.27.0","@civitas-cerebrum/test-coverage":"^0.0.8"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@playwright/test":"^1.58.2"},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.0.7_1774544029298_0.795892538406934","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@civitas-cerebrum/element-repository","version":"0.0.8","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.0.8","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"f1eb86d53cc39f270391c239d016f89a2b31f1da","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.0.8.tgz","fileCount":26,"integrity":"sha512-6whDyA41FMky0IiajQiAAiH0+TJcxq7DjiJu3dM4GkZXjAq9REYBErvFdO5QzG6WfnO96dw0lveD3aXSPnkptQ==","signatures":[{"sig":"MEYCIQCiUQz8ctrz0pPSps8LLZu5U54q8G036WuRiPdnD8WT7AIhAIm45Of5L4+e9fBDDicEwQbbqBaDDkR0ybTLSVjSzENX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77841},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"00eaba2e07eb7cef372486d016162cd9ad9aa5d9","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.8"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.0.8_1774565846899_0.8936224119293568","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@civitas-cerebrum/element-repository","version":"0.0.9","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.0.9","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"5ae099a6f8d20e75132af3bdc2c2d58cdc4c4d6a","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.0.9.tgz","fileCount":26,"integrity":"sha512-QQ7RllH62ElwSrqtgNpo4UMXLs8mEBQqYuRuSaq9l/nQ5Sk+/YKJovG/5OfHKBisYAGG7ytb/n4fG9/frz3U/A==","signatures":[{"sig":"MEUCIQCYzFXnBUhyG3ov7Pqvpd9v7bCTevN3YzgZwle0MT+oXgIgWjL6CkEHF+mKSziV2Rt5+MWzME6f7x98Sr7Nbho/+mE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":74640},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"455f3c95b5e8825793e42847e4bb48e4cd884af0","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.8"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.0.9_1774612501783_0.5427037543625546","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@civitas-cerebrum/element-repository","version":"0.1.0","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.0","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"7ff9f2519641c3c7c8057619a63ba450250d1084","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.0.tgz","fileCount":26,"integrity":"sha512-oJmrdrDSsvmIsr/HWUs9/IgG49SZ2tS2fZWSppxw2QU4/Pbx4C4EVYEZgVovSESzgHDL9ABpsBGnG/u14tr/WA==","signatures":[{"sig":"MEYCIQC6pOaDrheIUl6ptUAFgy5AkwEy/VrnYQWZ6Gv+GayozQIhAIF0/MXSDdZrvlByJYDaQhxvfAjT/0Bi6UhS7gVu8mjn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76585},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f599b11d77cabdfda5a97005763f20cd7eec4ca9","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.8"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.0_1774619967345_0.6459734462423761","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@civitas-cerebrum/element-repository","version":"0.1.1","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.1","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"bcf581087d0e3401fee92ac57917cc3ece6a6e88","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.1.tgz","fileCount":26,"integrity":"sha512-t9NKu6XnRIyA5NoH7EVwsjqBZw/aSiJ25fSQvQXVWqbG8wUybHYCiX1PCd3qJZgpH1gBdJniqblckE1oYMO5Vg==","signatures":[{"sig":"MEUCIAYyOxWWsOhNFlikUnVR2UGUs6IDrygIVncRPT9Kdq7xAiEAnrkmK4b8b775vKx6SxofK8rIGhfosk17HYLRZzJNDK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77445},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"02a4af932d8ac163b4712b58878c8b994d8b6fc5","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.9.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.9"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.1_1774649570011_0.7495912300388143","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@civitas-cerebrum/element-repository","version":"0.1.2","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.2","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"4325f123971ffcfc2453997d6994459052b7367d","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.2.tgz","fileCount":30,"integrity":"sha512-QM4MG8Li1mqaNomxAs7fcrfYiQAi4hoIrgFg9MaOX1cRyMZrzkATnzjTM1lhXu7xcF78gXb9HH3mgbAPYz558g==","signatures":[{"sig":"MEYCIQDeLt1kLfmAUvz+ApKJN/BZOfMzVc12ISmANMBjYlzoAwIhAIwzl2XcnyJirWQ69P2DxzRMJgbv6XuJBn7GvJYosKJS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99683},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0ed91965f3595eaaa25f107100ee12212d9114e3","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.9"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.2_1775802354993_0.3736042160002371","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@civitas-cerebrum/element-repository","version":"0.1.3","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.3","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"c33827cb7a49b150cfee381b7a57436dbd7d51bc","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.3.tgz","fileCount":34,"integrity":"sha512-JX3m8BK+5mvoqbEA/YEX5dFr88fj3dVaR6pk741k8xRCTRbdt79aE6Fo1Y1A+siSCAbZLkN5hNgmH2HmSGHMDg==","signatures":[{"sig":"MEUCIQCYmlANw4s3f91ewNa+pROAfZu4GRtb0eLQqZDzi3n3XwIgRyAXvkpRV0EzC9plaSSSH43dMUvG9pvYTf1g6PPqjwk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":129326},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5de3b8d57d7a2e5490dc8b2e65f690908da4efdd","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.0.9"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.3_1776245485029_0.336316513651171","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@civitas-cerebrum/element-repository","version":"0.1.4","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.4","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"3d7002c63247138a2809e870296ba38c93215922","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.4.tgz","fileCount":34,"integrity":"sha512-iBZhE0iqGk1Yvdq0754a+2Hd3kADz0GYJPOKBa7BQ5oWLZNXdzIyOtIfgGMC2hizoOxkAHkDmvX8qp70aCSbXg==","signatures":[{"sig":"MEUCIQC6+rUV3DiFjcoKuP1Gc7/Y4kInOVl0sJnnWMbBbqA6ywIgLKUa91h27/5h4OcIckvr1DsV9GzMSs7vqCgVNdyDk7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139315},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e8054c7932136236429c80b641e6cef8d4dd10c0","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.4_1776449976541_0.037464378604946","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@civitas-cerebrum/element-repository","version":"0.1.5","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.5","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"26ed2a89f44b5e0b4361017e31794b51a63179ef","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.5.tgz","fileCount":34,"integrity":"sha512-uP98UFUSgF2q6C6GiAOjwbUryIrLb+h626DL6rPrZOOZshdUXHQ2ifeN1eJi8BLOTwVvXpBjFLC2M0v3ZAW/wA==","signatures":[{"sig":"MEUCIQCMRG+eXc3EnIZ7hIFIrSRtXsLXXWJ96GOHrPAYJv4SpQIgTouxZqtLu/o9CKOlm2Z67yBCB6k45n9LkDk0SAIMV9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141911},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e1082fe772a08f00827f82eaeee2aec06aefc29c","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.5_1776531209773_0.3760687371485594","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@civitas-cerebrum/element-repository","version":"0.1.6","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.6","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"861b51e27d0c720cf12ae94de219d8583175ec46","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.6.tgz","fileCount":34,"integrity":"sha512-TXGEJPX2ZfV2SQsF3ULfEj2TO44QiOhajFQjekFFMB5J6fFioreYemCRoMv7LfOm50WLAw8b7r0cK24MR+6U9w==","signatures":[{"sig":"MEQCIE0mYMbVoscMMjsfzVwHF+0HoEn29UlxW+pgzfiP4IumAiB2sfcGzmVARmeJuUNMoZ+lX1jugf+0r3jfUhgI7dnUlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149618},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"64faf414d80dae3c4566be52119ea27da46f111c","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.6_1776537785125_0.8443950757532404","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@civitas-cerebrum/element-repository","version":"0.1.7","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.7","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"5c52639cac1fd08e35c8d2041d79f143ad10bd3f","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.7.tgz","fileCount":34,"integrity":"sha512-G0Pa3epfLd8TQQ8reby53dWOLkiVsgxRtxHBkxIGvNFANIRHfce0eK8fljJCLhfw3ZgPhFX03UpuBfg5bXO12g==","signatures":[{"sig":"MEYCIQCSrDcUh4AXpKZYINDei5SM53sorHJawqtpXe9805SeCgIhAKaHsNEVOWSZfU6TWwQQxF7ySsPrJhkEEUdSjpL43NEM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":150534},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8230184fb6a50b0e47e59084ddd90fdf1fcfc9ff","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.7_1776607118368_0.47752118839187974","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@civitas-cerebrum/element-repository","version":"0.1.8","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.8","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"eb3d3fbd998114d6a463ccd14df9b411da913659","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.8.tgz","fileCount":34,"integrity":"sha512-mWNjvjBJ6wEyLsViH2h4sdwooiE5zqOyv7MVjE4hjYBxQRP2l40XY92orCHPdSjOAdR+dT54mtbn91tGf5z+Zg==","signatures":[{"sig":"MEQCIFNaFPcnR8EuAP5c5QvQfh72olW/SjjIfBjEPQoWMz6UAiBpcfTeA+Dt8uAnJQ40cyQxAMm3lO5BBpKRtNErmVayjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":160941},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"00cade5ee3a77aa0158fc9d9bb0e43757ae7edfd","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.8_1776626959061_0.5274753139426895","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@civitas-cerebrum/element-repository","version":"0.1.9","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.1.9","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"ea8be64e25be5eb0a73c975a21e89c265fc26813","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.1.9.tgz","fileCount":34,"integrity":"sha512-jcmFJUUbCFMb9faAKcFKE2bATe75/pNhBtX95jvbwVxKJBqGuwq1ULFy38qMXHk99P7SlpCYC+9xmZcLCKJcIw==","signatures":[{"sig":"MEUCIFcCdHru9unu5mwVAhbyBzlTPwrIX+A9M3x9151RjeqjAiEA0auuIziYFBohw/bqPRSgkWN6+6TCTJjDZ0iLPZaKh+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":161552},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e107171022e4156c69957b9cc571a76e333f552e","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.1.9_1777776302372_0.5383660092886908","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@civitas-cerebrum/element-repository","version":"0.2.0","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.2.0","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"3db2ff277b4b7d0f388aa873d73946ea84e50d5d","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.2.0.tgz","fileCount":34,"integrity":"sha512-Ewa9zYlj/7F1USWge603C7XnTCvo0Ii/Z5ORZWPY7bOYmAnPIJ7CzIGTasJXY9NfPgf7NKZZ9VBo7W+qf//hiA==","signatures":[{"sig":"MEYCIQDCNa7pIaSZA8WYA4JoriSEihjQMa19G6bd7DH5cdHg0QIhAN63o/wHuPAZos9NhSg8QXSjDzHKvcdOdHBjl/6nVO1r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162323},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"bd5d3e22a3d6440ee9792dea53d5c25dbb84b6a3","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.11.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.2.0_1778257707982_0.9608212473995936","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@civitas-cerebrum/element-repository","version":"0.2.1","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.2.1","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"44e49368535342d92bacdc451ec17f2ffd391ce6","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.2.1.tgz","fileCount":34,"integrity":"sha512-YccYUiiCm1jmuNjPTazQn/BorY+8uXNbOx7dDJbevuPOsyjWZr+hgVqv4zMSP1IW1oP1uMyFZHqrWg/ILWUuWA==","signatures":[{"sig":"MEQCIBS/Hq3uhuHc9TH5qiQH+KwxxROj8ejRe/Tq+YmJqA1dAiBQsQuDOXKxDOxiUO6LpcJ5QRovyTmVuLKYdzvwT8YwWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162616},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d266ada0b1353cccc70aba3816412ac868ff3f79","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.12.1","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.59.1"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.2.1_1779181035849_0.044625244381569784","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@civitas-cerebrum/element-repository","version":"0.3.0","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.3.0","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"c13c34023c8d3a363df9389ba1f1d6de47412437","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.3.0.tgz","fileCount":34,"integrity":"sha512-KgzEfA/D5nsrqwUk6MrLLthYYg1UjprIQYTg68XkgqR/0ZEnaBK5j3GSV80A2C+beNudzB3NKnhquFFPXMSp+Q==","signatures":[{"sig":"MEYCIQC35ssNRXy5ujh63oD7SN/apdh99KI5Q3awwPZCAZrt7AIhALajRiVrh4iYhQMoStgQd7WTXoNos4YOoiH5YhrWfpbC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":165040},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7e1a8772785b3b5f17cab0bb86bc9aff8c88a2db","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"overrides":{"ws":"^8.21.0"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.13.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.61.0"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.3.0_1781642275258_0.008531147844941911","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@civitas-cerebrum/element-repository","version":"0.3.1","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"author":{"name":"Umut Ay Bora"},"license":"MIT","_id":"@civitas-cerebrum/element-repository@0.3.1","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"dist":{"shasum":"afe1219e479bd14d22526612f339f5d8e2e456f4","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.3.1.tgz","fileCount":34,"integrity":"sha512-bHq9NnXTIaA/AQqDfXip2t5z+9N6WlePs5PUeYNo9yIiB1k7fvIuGwiI7YEtU15T6t3i8zNmuINFbp565BZFFA==","signatures":[{"sig":"MEQCIAPhXzaGid2gRoFW0aLKZ6TO2SGc4Ymdf5NffbiAyfnzAiBrTUq2ydicuU0gAsFcxp8jAznfWizirKfLYXVLpQpRfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":165040},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"771e894f86a3ed5708a53c381613722c152caae8","scripts":{"test":"npx playwright test","build":"npm run clean && tsc","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"overrides":{"ws":"^8.21.0"},"repository":{"url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git","type":"git"},"_npmVersion":"11.13.0","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","webdriverio":"^9.27.0","@playwright/test":"^1.61.0"},"peerDependencies":{"webdriverio":"^9.27.0","@playwright/test":"^1.58.2"},"peerDependenciesMeta":{"webdriverio":{"optional":true},"@playwright/test":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/element-repository_0.3.1_1781691276997_0.7863809101610544","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@civitas-cerebrum/element-repository","version":"0.3.2","description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"clean":"rm -rf dist","build":"npm run clean && tsc","test":"npx playwright test","prepublishOnly":"npm run build"},"devDependencies":{"@civitas-cerebrum/test-coverage":"^0.1.0","@playwright/test":"^1.61.0","@types/node":"^20.0.0","typescript":"^5.0.0","webdriverio":"^9.27.0"},"peerDependencies":{"@playwright/test":"^1.58.2","webdriverio":"^9.27.0"},"peerDependenciesMeta":{"@playwright/test":{"optional":true},"webdriverio":{"optional":true}},"keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"publishConfig":{"access":"public","provenance":true},"repository":{"type":"git","url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git"},"author":{"name":"Umut Ay Bora"},"license":"MIT","overrides":{"ws":"^8.21.0"},"gitHead":"c33e2649e02ada278c565802bb4173910b38ee1b","_id":"@civitas-cerebrum/element-repository@0.3.2","bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"homepage":"https://github.com/civitas-cerebrum/element-repository#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-DhZvhRMIxHAkKSW287wtK0zWOrIRq1mWwsdNBlIR4XnMQVNNnrpDJgMF85o2IBUQ0YDHLfjWUmWVkQ+tZrsfpg==","shasum":"800590d69e49aafc9123bb591c3564ebeb4d055d","tarball":"https://registry.npmjs.org/@civitas-cerebrum/element-repository/-/element-repository-0.3.2.tgz","fileCount":34,"unpackedSize":165016,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@civitas-cerebrum%2felement-repository@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFfD3N3yGATMe7KrpomN/AvQWtwWTDgD4rJYzh0q0AqiAiA6Mn6ahFvH8N85IQ/QA1AonRhy5c9cTgtxVUJgmepPqg=="}]},"_npmUser":{"name":"umutayb","email":"umutaybora@gmail.com"},"directories":{},"maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/element-repository_0.3.2_1786528572248_0.5637841203605123"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T09:46:49.231Z","modified":"2026-08-12T09:56:12.827Z","0.0.5":"2026-03-23T09:46:49.490Z","0.0.6":"2026-03-23T10:57:08.713Z","0.0.7":"2026-03-26T16:53:49.424Z","0.0.8":"2026-03-26T22:57:27.023Z","0.0.9":"2026-03-27T11:55:01.947Z","0.1.0":"2026-03-27T13:59:27.498Z","0.1.1":"2026-03-27T22:12:50.169Z","0.1.2":"2026-04-10T06:25:55.143Z","0.1.3":"2026-04-15T09:31:25.204Z","0.1.4":"2026-04-17T18:19:36.691Z","0.1.5":"2026-04-18T16:53:29.918Z","0.1.6":"2026-04-18T18:43:05.268Z","0.1.7":"2026-04-19T13:58:38.509Z","0.1.8":"2026-04-19T19:29:19.206Z","0.1.9":"2026-05-03T02:45:02.541Z","0.2.0":"2026-05-08T16:28:28.108Z","0.2.1":"2026-05-19T08:57:15.999Z","0.3.0":"2026-06-16T20:37:55.451Z","0.3.1":"2026-06-17T10:14:37.149Z","0.3.2":"2026-08-12T09:56:12.393Z"},"bugs":{"url":"https://github.com/civitas-cerebrum/element-repository/issues"},"author":{"name":"Umut Ay Bora"},"license":"MIT","homepage":"https://github.com/civitas-cerebrum/element-repository#readme","keywords":["playwright","automation","locators","selectors","clean-code","page-object-model","test-automation","json-repository"],"repository":{"type":"git","url":"git+ssh://git@github.com/civitas-cerebrum/element-repository.git"},"description":"A lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers.","maintainers":[{"name":"umutayb","email":"umutaybora@gmail.com"}],"readme":"# Element Repository\n\n[![NPM Version](https://img.shields.io/npm/v/@civitas-cerebrum/element-repository?color=rgb(88%2C%20171%2C%2070))](https://www.npmjs.com/package/@civitas-cerebrum/element-repository)\n\nA lightweight, robust package that decouples your UI selectors from your test code. By externalizing locators into a central JSON repository, you make your test automation framework cleaner, easier to maintain, and accessible to non-developers. Supports both **Playwright (web)** and **Appium/WebdriverIO (mobile)** through a unified API.\n\n## 📦 Installation\n\n```bash\nnpm i @civitas-cerebrum/element-repository\n```\n\n**Peer Dependencies:**\nFor web testing, install `@playwright/test` or `playwright`. For mobile/platform testing, install `webdriverio`.\n\n## 🚀 What is it good for?\n\n* **Zero Hardcoded Selectors:** Keep your Page Objects and Step Definitions completely free of complex DOM queries.\n* **Platform-Agnostic Element API:** A unified `Element` interface with interaction, state, extraction, querying, and waiting methods that work identically across Playwright and WebDriverIO.\n* **Fluent Action Chains:** Sequence multiple actions on an element with `element.action().waitForState('visible').click()`.\n* **Dynamic Parsing:** Automatically converts your JSON configuration into platform-native selectors.\n* **Smart Locators:** Built-in methods for arrays, randomized element selection, text-filtering, attribute-filtering, and visibility checks.\n\n## 📐 Package Contract\n\nThis package owns **element acquisition + primitive operations only**. Everything with retry, fallback, options-driven variants, composition, matcher trees, or assertion framing belongs in consumer packages.\n\n**What lives here:**\n- Locating elements from a JSON repository\n- The `Element` interface and its two backends (`WebElement` for Playwright, `PlatformElement` for Appium)\n- `ElementChain` — a fluent action sequencer over `Element` primitives\n- Thin one-call wrappers over the underlying `Locator` / WebdriverIO element (click, fill, hover, check, scrollIntoView, etc.)\n\n**What lives in consumers:**\n- Verification DSLs, assertion error formatting, retry-on-mismatch semantics\n- Pointer-interception auto-retry, force-click fallbacks, `{ withoutScrolling, ifPresent }` modifiers\n- Listed-element composition (text/regex/withDescendant filtering)\n- Matcher trees (`steps.expect(...).text.toBe(...)`), VisibleChain, Steps API facades\n\n**Rule of thumb — classify by implementation, not by name.** A method whose body is a single wrapped primitive call is a primitive and stays here (even if it sounds verification-y — e.g., `ElementChain.isPresent()` is just `element.isVisible()` after queue execution). A method that retries, composes, or formats assertion errors is smart and moves to a consumer.\n\nSee `@civitas-cerebrum/element-interactions` (web) and `@civitas-cerebrum/singularity-engine` (web + mobile + desktop) for the smart layer.\n\n## 🏗️ Configuration\n\nCreate a JSON file in your project to hold your selectors:\n\n**`locators.json`**\n\n```json\n{\n  \"pages\": [\n    {\n      \"name\": \"HomePage\",\n      \"elements\": [\n        {\n          \"elementName\": \"search-input\",\n          \"selector\": { \"css\": \"input[name='search']\" }\n        },\n        {\n          \"elementName\": \"submit-button\",\n          \"selector\": { \"id\": \"btn-submit\" }\n        }\n      ]\n    },\n    {\n      \"name\": \"ProductList\",\n      \"elements\": [\n        {\n          \"elementName\": \"product-cards\",\n          \"selector\": { \"xpath\": \"//article[@class='product']\" }\n        }\n      ]\n    }\n  ]\n}\n```\n\n### Multi-Platform Configuration\n\nUse the `platform` field to define platform-specific selectors for the same page. Pages without a `platform` field default to `web`.\n\n```json\n{\n  \"pages\": [\n    {\n      \"name\": \"LoginPage\",\n      \"platform\": \"web\",\n      \"elements\": [\n        { \"elementName\": \"submitButton\", \"selector\": { \"css\": \"button.web-submit\" } }\n      ]\n    },\n    {\n      \"name\": \"LoginPage\",\n      \"platform\": \"android\",\n      \"elements\": [\n        { \"elementName\": \"submitButton\", \"selector\": { \"accessibility id\": \"SubmitBtn\" } }\n      ]\n    },\n    {\n      \"name\": \"LoginPage\",\n      \"platform\": \"ios\",\n      \"elements\": [\n        { \"elementName\": \"submitButton\", \"selector\": { \"predicate\": \"label == \\\"Submit\\\"\" } }\n      ]\n    }\n  ]\n}\n```\n\n### Supported Selector Keys\n\nThe `platform` field on each page object determines which selector format is used. If `platform` is omitted, it defaults to `web`.\n\n#### Web (Playwright)\n\n| Key | Resolves To | Example |\n|-----|-------------|---------|\n| `css` | `css=<value>` | `\"css\": \"button.primary\"` |\n| `xpath` | `xpath=<value>` | `\"xpath\": \"//button[@id='submit']\"` |\n| `id` | `#<value>` | `\"id\": \"btn-submit\"` |\n| `text` | `text=<value>` | `\"text\": \"Submit\"` |\n| `testid` | `[data-testid='<value>']` | `\"testid\": \"login-btn\"` |\n| `role` | `[role='<value>']` | `\"role\": \"button\"` |\n| `placeholder` | `[placeholder='<value>']` | `\"placeholder\": \"Search...\"` |\n| `label` | `[aria-label='<value>']` | `\"label\": \"Close\"` |\n\n#### Non-Web / Mobile (Appium)\n\n| Key | camelCase Alias | Resolves To | Example |\n|-----|-----------------|-------------|---------|\n| `accessibility id` | `accessibilityId` | `~<value>` | `\"accessibility id\": \"LoginBtn\"` |\n| `xpath` | — | `<value>` (raw) | `\"xpath\": \"//android.widget.Button\"` |\n| `id` | — | `#<value>` | `\"id\": \"submit-btn\"` |\n| `uiautomator` | `androidUIAutomator` | `android=<value>` | `\"uiautomator\": \"new UiSelector().text(\\\"Go\\\")\"` |\n| `predicate` | `iOSNsPredicateString` | `-ios predicate string:<value>` | `\"predicate\": \"label == \\\"Login\\\"\"` |\n| `class chain` | `iOSClassChain` | `-ios class chain:<value>` | `\"class chain\": \"**/XCUIElementTypeButton\"` |\n| `class name` | `className` | `<value>` (raw) | `\"class name\": \"android.widget.EditText\"` |\n\n> All strategy keys that contain spaces also accept a camelCase alias (e.g., `\"accessibilityId\"` instead of `\"accessibility id\"`).\n\n### Selector Fallback Chains\n\nAdd a nested `fallback` selector to handle DOM variations (per country, per brand, per renderer) without duplicating repo entries. When the primary matches zero elements within a short probe timeout (100ms), resolution walks into `fallback` — recursively.\n\n```json\n{\n  \"elementName\": \"loginButton\",\n  \"selector\": {\n    \"css\": \"[data-qa='login-button']\",\n    \"fallback\": {\n      \"role\": \"button\",\n      \"name\": { \"regex\": \"Log in|Iniciar sesión|Anmelden|Inloggen\", \"flags\": \"i\" }\n    }\n  }\n}\n```\n\n**Rules:**\n- Primary attaches within the repo's `defaultTimeout` (15s default) → fallback is never consulted. `waitFor` resolves the moment the element appears, so the common case pays no timeout cost.\n- Primary does not attach within `defaultTimeout` → walk into `selector.fallback`.\n- Entries without a `fallback` key skip the probe entirely — the lazy locator uses the element-interactions' action-time timeout (30–60s) just like before.\n- Chains are recursive: `fallback.fallback.fallback` is legal.\n- Fallbacks can mix strategies freely — CSS primary with role+name fallback, id primary with xpath fallback, etc.\n\n**Worst-case latency** on an N-level chain where no node matches: `N × defaultTimeout`. In practice fallbacks cover real DOM variants, so the first or second level matches on pages where the primary doesn't.\n\n**Common uses:**\n- **Multi-country DOM variants** — one entry serves every country instead of country-specific repo files.\n- **Brand-specific primary + generic fallback** — prefer a brand-specific `data-qa`, degrade to a role selector.\n- **Graceful degradation** — test works on both old and new DOM during progressive rollout.\n\n## 💻 Usage\n\n### Initialization\n\nThe constructor takes the **driver** (Playwright `Page` or WebDriverIO `Browser`) as the first argument:\n\n```typescript\nimport { ElementRepository } from '@civitas-cerebrum/element-repository';\n\n// Option A: Pass a file path (relative to project root)\nconst repo = new ElementRepository(page, 'tests/data/locators.json');\n\n// Option B: Pass parsed JSON data directly\nimport locatorData from '../data/locators.json';\nconst repo = new ElementRepository(page, locatorData);\n\n// Option C: With a custom timeout (default: 15000ms)\nconst repo = new ElementRepository(page, locatorData, 30000);\n\n// Access the bound driver\nconst driver = repo.driver; // returns the Page/Browser passed to the constructor\n```\n\n### Retrieving Elements\n\nAll methods use `(elementName, pageName)` order and return unified `Element` objects:\n\n```typescript\ntest('Search and select random product', async ({ page }) => {\n  const repo = new ElementRepository(page, 'tests/data/locators.json');\n\n  // Get a single element (defaults to first match)\n  const searchInput = await repo.get('search-input', 'HomePage');\n  await searchInput.fill('Trousers');\n\n  // Get with a specific strategy\n  const thirdCard = await repo.get('product-cards', 'ProductList', {\n    strategy: SelectionStrategy.INDEX, index: 2\n  });\n\n  // Select a random element from a list\n  const randomProduct = await repo.getRandom('product-cards', 'ProductList');\n  await randomProduct?.click();\n\n  // Find by text\n  const specificProduct = await repo.getByText('product-cards', 'ProductList', 'Blue Chinos');\n  await specificProduct?.click();\n\n  // Find by HTML attribute\n  const activeCard = await repo.getByAttribute('product-cards', 'ProductList', 'data-status', 'active');\n\n  // Get by index\n  const secondCard = await repo.getByIndex('product-cards', 'ProductList', 1);\n\n  // Get the first visible element\n  const visibleModal = await repo.getVisible('modal', 'HomePage');\n\n  // Filter by ARIA role\n  const navLink = await repo.getByRole('nav-links', 'HomePage', 'link');\n});\n```\n\n### Fluent Action Chains\n\nEvery `Element` exposes an `action(timeout?)` method that returns a thenable `ElementChain` builder. Queue multiple actions and execute them all with a single `await`:\n\n```typescript\nconst element = await repo.get('submitButton', 'LoginPage');\n\n// Interaction chain\nawait element.action(5000)\n  .waitForState('visible')\n  .click()\n\n// Click without scrolling (for dropdown/flyout items)\nawait element.action()\n  .waitForState('attached')\n  .click({ withoutScrolling: true })\n\n// Fill and verify\nawait element.action()\n  .fill('hello@test.com')\n  .verifyText('hello@test.com')\n\n// Verification chain\nawait element.action(5000)\n  .verifyPresence()\n  .verifyText('Submit')\n  .verifyAttribute('type', 'submit')\n\n// Extraction (terminal — returns value)\nconst text = await element.action().getText()\nconst href = await element.action().getAttribute('href')\nconst count = await element.action().getCount()\n```\n\n#### Available Chain Methods\n\n**Interactions:** `click(options?)`, `clickIfPresent(options?)`, `hover()`, `fill(text)`, `clear()`, `check()`, `uncheck()`, `doubleClick()`, `scrollIntoView()`, `pressSequentially(text, delay?)`, `dispatchEvent(event)`\n\n**Verifications:** `verifyPresence()`, `verifyAbsence()`, `verifyText(expected?)`, `verifyTextContains(text)`, `verifyAttribute(name, value)`, `verifyEnabled()`, `verifyDisabled()`, `verifyChecked()`, `verifyCount(options)`\n\n**Extractions (terminal):** `getText()`, `getAttribute(name)`, `getInputValue()`, `getCount()`, `getRaw()`, `isPresent()`\n\n**Waiting:** `waitForState(state)`\n\n## 🛠️ API Reference\n\n### ElementRepository\n\n#### `constructor(driver, dataOrPath, defaultTimeout?)`\n\n| Param | Type | Description |\n|-------|------|-------------|\n| `driver` | `any` | Playwright `Page` or WebDriverIO `Browser`/`Driver` instance |\n| `dataOrPath` | `string \\| PageRepository` | Path to JSON file or parsed JSON object |\n| `defaultTimeout` | `number` | Default wait timeout in ms (default: `15000`) |\n\n#### `get(elementName, pageName, options?)`\n\nReturns a single `Element`. Defaults to the first match. Pass `ElementResolutionOptions` to control selection:\n\n```typescript\nimport { SelectionStrategy } from '@civitas-cerebrum/element-repository';\n\nawait repo.get('button', 'Page')                                                    // first (default)\nawait repo.get('button', 'Page', { strategy: SelectionStrategy.INDEX, index: 2 })   // by index\nawait repo.get('button', 'Page', { strategy: SelectionStrategy.RANDOM })             // random\nawait repo.get('button', 'Page', { strategy: SelectionStrategy.TEXT, value: 'Sub' }) // by text\nawait repo.get('button', 'Page', { strategy: SelectionStrategy.ALL })                // un-narrowed (for counts)\n```\n\n#### `getAll(elementName, pageName)`\n\nReturns an array of all matching `Element` objects.\n\n#### `getRandom(elementName, pageName, strict?)`\n\nRandomly selects one element from all matches.\n\n#### `getByText(elementName, pageName, desiredText, strict?)`\n\nReturns the first element containing the specified text. Tries exact match first, falls back to contains.\n\n#### `getByAttribute(elementName, pageName, attribute, value, options?)`\n\nReturns the first element whose HTML attribute matches the given value.\n\n**Options:** `exact` (boolean), `strict` (boolean)\n\n#### `getByIndex(elementName, pageName, index, strict?)`\n\nReturns the element at the specified zero-based index.\n\n#### `getVisible(elementName, pageName, strict?)`\n\nReturns the first visible element, filtering out hidden duplicates.\n\n#### `getByRole(elementName, pageName, role, strict?)`\n\nFilters elements by their `role` HTML attribute.\n\n#### `getSelector(elementName, pageName)`\n\nReturns a platform-formatted selector string (synchronous).\n\n#### `getSelectorRaw(elementName, pageName)`\n\nReturns `{ strategy, value }` — the raw selector without platform formatting.\n\n#### `getPagePlatform(pageName)`\n\nReturns the platform string for a page (`'web'`, `'android'`, `'ios'`).\n\n#### Strict Mode\n\nAll `get*` methods that return `Element | null` accept an optional `strict` parameter:\n\n- **`strict: false`** (default) — returns `null` when no match is found.\n- **`strict: true`** — throws an `Error` when no match is found.\n\n### Element Interface\n\nAll `get*` methods return an `Element` — a platform-agnostic interface wrapping either a Playwright `Locator` (`WebElement`) or a WebDriverIO element (`PlatformElement`).\n\n#### Interaction Methods\n\n| Method | Description |\n|--------|-------------|\n| `click(options?)` | Clicks the element. Returns `Promise<Element>`. |\n| `fill(text, options?)` | Clears and fills with text. Returns `Promise<Element>`. |\n| `clear(options?)` | Clears the element's value. Returns `Promise<Element>`. |\n| `check(options?)` | Checks a checkbox/radio. Returns `Promise<Element>`. |\n| `uncheck(options?)` | Unchecks a checkbox. Returns `Promise<Element>`. |\n| `hover(options?)` | Hovers over the element. Returns `Promise<Element>`. |\n| `doubleClick(options?)` | Double-clicks. Returns `Promise<Element>`. |\n| `scrollIntoView(options?)` | Scrolls into view. Returns `Promise<Element>`. |\n| `pressSequentially(text, delay?, options?)` | Types character by character. Returns `Promise<Element>`. |\n| `setInputFiles(filePath, options?)` | Sets file input value. **Web only.** |\n| `dispatchEvent(event)` | Dispatches a DOM event. **Web only.** |\n\nAll interaction methods accept an optional `{ timeout?: number }` and return the element for simple chaining.\n\n#### State, Extraction, Querying, and Waiting\n\n| Method | Description |\n|--------|-------------|\n| `isVisible()` | Returns `true` if visible. |\n| `isEnabled()` | Returns `true` if enabled. |\n| `isChecked()` | Returns `true` if checked. |\n| `raw()` | Returns the selector string. |\n| `textContent()` | Returns text content or `null`. |\n| `getAttribute(name)` | Returns attribute value or `null`. |\n| `inputValue()` | Returns current input value. |\n| `count()` | Returns matched element count. |\n| `all()` | Returns array of all matched elements. |\n| `first()` | Returns the first match. |\n| `nth(index)` | Returns element at index. |\n| `filter({ hasText })` | Filters by text content. |\n| `locateChild(selector)` | Locates a descendant. |\n| `waitFor(options?)` | Waits for state: `\"visible\"`, `\"hidden\"`, `\"attached\"`, `\"detached\"`. |\n| `action(timeout?)` | Returns a fluent `ElementChain` builder. |\n\n### 🔧 Type Safety\n\n```typescript\nimport { Element, isWeb, isPlatform } from '@civitas-cerebrum/element-repository';\n\nconst el = await repo.get('submitButton', 'LoginPage');\n\nif (isWeb(el)) {\n  // Access the underlying Playwright Locator\n  await (el as WebElement).locator.click();\n}\n\nif (isPlatform(el)) {\n  // Access the WebDriverIO selector\n  console.log((el as PlatformElement).selector);\n}\n```\n\n## ⚠️ Breaking Changes (v0.1.0)\n\n| Change | Migration |\n|---|---|\n| Constructor requires `driver` as first arg | `new ElementRepository(data)` → `new ElementRepository(page, data)` |\n| Methods drop `driver`/`page` first param | `repo.get(page, 'Page', 'el')` → `repo.get('el', 'Page')` |\n| Param order flipped to `(elementName, pageName)` | Swap args in all calls |\n| Element methods return `Promise<Element>` | Was `Promise<void>` — no action needed unless you depend on `void` |\n| `raw()` returns actual selector string | Was `locator.toString()` — likely an improvement |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}