{"_id":"@emesoft_company/playwright-core","_rev":"3-9da6b771a85e2c24f9620afc7d3dbeff","name":"@emesoft_company/playwright-core","dist-tags":{"latest":"2.2.0"},"versions":{"2.1.0":{"name":"@emesoft_company/playwright-core","version":"2.1.0","keywords":["playwright","e2e","testing","automation","test-framework"],"license":"UNLICENSED","_id":"@emesoft_company/playwright-core@2.1.0","maintainers":[{"name":"huy.dinh","email":"it@emesoft.net"},{"name":"paul.ngo","email":"phien.ngo@emesoft.net"}],"homepage":"https://github.com/emesoft/playwright-core#readme","bugs":{"url":"https://github.com/emesoft/playwright-core/issues"},"dist":{"shasum":"9c25e70ae862bd40489e199b83519765484d94dd","tarball":"https://registry.npmjs.org/@emesoft_company/playwright-core/-/playwright-core-2.1.0.tgz","fileCount":92,"integrity":"sha512-IbprLjhv/nLV5Croh2XXTgWD63EhyNHNku9xj5YppQ+11gdj8vZiwuNqqvPBsDRILw2YN5c02+iwJDCKcww/2g==","signatures":[{"sig":"MEUCIA6XweXBX9XVuQBzqxh7CCCv7kJKNzUlZ6v+B2MRf2JEAiEAnkecVqQuGgd3GTw3rXffXbp/7LS7NZVEzCJjMe5PoF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023982},"main":"./dist/index.cjs","type":"module","_from":"file:emesoft_company-playwright-core-2.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./di":{"types":"./dist/di/index.d.ts","import":"./dist/di/index.js","require":"./dist/di/index.cjs"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js","require":"./dist/ui/index.cjs"},"./api":{"types":"./dist/api/index.d.ts","import":"./dist/api/index.js","require":"./dist/api/index.cjs"},"./auth":{"types":"./dist/auth/index.d.ts","import":"./dist/auth/index.js","require":"./dist/auth/index.cjs"},"./data":{"types":"./dist/data/index.d.ts","import":"./dist/data/index.js","require":"./dist/data/index.cjs"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","require":"./dist/utils/index.cjs"},"./config":{"types":"./dist/config/index.d.ts","import":"./dist/config/index.js","require":"./dist/config/index.cjs"},"./errors":{"types":"./dist/errors/index.d.ts","import":"./dist/errors/index.js","require":"./dist/errors/index.cjs"},"./expect":{"types":"./dist/expect/index.d.ts","import":"./dist/expect/index.js","require":"./dist/expect/index.cjs"},"./logging":{"types":"./dist/logging/index.d.ts","import":"./dist/logging/index.js","require":"./dist/logging/index.cjs"},"./fixtures":{"types":"./dist/fixtures/index.d.ts","import":"./dist/fixtures/index.js","require":"./dist/fixtures/index.cjs"},"./reporting":{"types":"./dist/reporting/index.d.ts","import":"./dist/reporting/index.js","require":"./dist/reporting/index.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","prepare":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"paul.ngo","email":"phien.ngo@emesoft.net"},"_resolved":"E:\\Projects\\Tester\\Playwrite\\playwright-core\\emesoft_company-playwright-core-2.1.0.tgz","_integrity":"sha512-IbprLjhv/nLV5Croh2XXTgWD63EhyNHNku9xj5YppQ+11gdj8vZiwuNqqvPBsDRILw2YN5c02+iwJDCKcww/2g==","repository":{"url":"git+https://github.com/emesoft/playwright-core.git","type":"git"},"_npmVersion":"10.9.2","description":"Shared Playwright automation core: fixtures, API client abstraction, config loader, auth helpers, reporting integration.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.0","pino":"^9.0.0","dotenv":"^16.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.0","eslint":"^9.9.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.14.0","@playwright/test":"^1.47.0","typescript-eslint":"^8.0.0"},"peerDependencies":{"@playwright/test":">=1.40.0"},"optionalDependencies":{"allure-js-commons":"^3.0.0","allure-playwright":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-core_2.1.0_1787718404171_0.42873506552507346","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@emesoft_company/playwright-core","version":"2.1.1","keywords":["playwright","e2e","testing","automation","test-framework"],"license":"UNLICENSED","_id":"@emesoft_company/playwright-core@2.1.1","maintainers":[{"name":"huy.dinh","email":"it@emesoft.net"},{"name":"paul.ngo","email":"phien.ngo@emesoft.net"}],"homepage":"https://github.com/emesoft/playwright-core#readme","bugs":{"url":"https://github.com/emesoft/playwright-core/issues"},"dist":{"shasum":"66cf374da2e590563d211b69e2faea6a0f31f4ee","tarball":"https://registry.npmjs.org/@emesoft_company/playwright-core/-/playwright-core-2.1.1.tgz","fileCount":92,"integrity":"sha512-DWkoP6NRfNtaFhOU31oylxuQgOU3YCMhVrJTeCvZMdX/32IVGdhrwOhz4jrJWiSln+RfqFEblUF8s9QeTf+BVw==","signatures":[{"sig":"MEUCIQCL3S2sIRT2xeZRyZaOT7nL/1lwd9csOO1LulK6jhFMbgIgXVNC35zLunJNBYy+SCqw1X9ESVAQ2AYVknfsYpLYDqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1023914},"main":"./dist/index.cjs","type":"module","_from":"file:emesoft_company-playwright-core-2.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./di":{"types":"./dist/di/index.d.ts","import":"./dist/di/index.js","require":"./dist/di/index.cjs"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js","require":"./dist/ui/index.cjs"},"./api":{"types":"./dist/api/index.d.ts","import":"./dist/api/index.js","require":"./dist/api/index.cjs"},"./auth":{"types":"./dist/auth/index.d.ts","import":"./dist/auth/index.js","require":"./dist/auth/index.cjs"},"./data":{"types":"./dist/data/index.d.ts","import":"./dist/data/index.js","require":"./dist/data/index.cjs"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","require":"./dist/utils/index.cjs"},"./config":{"types":"./dist/config/index.d.ts","import":"./dist/config/index.js","require":"./dist/config/index.cjs"},"./errors":{"types":"./dist/errors/index.d.ts","import":"./dist/errors/index.js","require":"./dist/errors/index.cjs"},"./expect":{"types":"./dist/expect/index.d.ts","import":"./dist/expect/index.js","require":"./dist/expect/index.cjs"},"./logging":{"types":"./dist/logging/index.d.ts","import":"./dist/logging/index.js","require":"./dist/logging/index.cjs"},"./fixtures":{"types":"./dist/fixtures/index.d.ts","import":"./dist/fixtures/index.js","require":"./dist/fixtures/index.cjs"},"./reporting":{"types":"./dist/reporting/index.d.ts","import":"./dist/reporting/index.js","require":"./dist/reporting/index.cjs"},"./package.json":"./package.json"},"private":false,"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup","prepare":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"paul.ngo","email":"phien.ngo@emesoft.net"},"_resolved":"E:\\Projects\\Tester\\Playwrite\\playwright-core\\emesoft_company-playwright-core-2.1.1.tgz","_integrity":"sha512-DWkoP6NRfNtaFhOU31oylxuQgOU3YCMhVrJTeCvZMdX/32IVGdhrwOhz4jrJWiSln+RfqFEblUF8s9QeTf+BVw==","repository":{"url":"git+https://github.com/emesoft/playwright-core.git","type":"git"},"_npmVersion":"10.9.2","description":"Shared Playwright automation core: fixtures, API client abstraction, config loader, auth helpers, reporting integration.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.23.0","pino":"^9.0.0","dotenv":"^16.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.2.0","eslint":"^9.9.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^20.14.0","@playwright/test":"^1.47.0","typescript-eslint":"^8.0.0"},"peerDependencies":{"@playwright/test":">=1.40.0"},"optionalDependencies":{"allure-js-commons":"^3.0.0","allure-playwright":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/playwright-core_2.1.1_1787724950423_0.9949183580169318","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@emesoft_company/playwright-core","version":"2.2.0","description":"Shared Playwright automation core: fixtures, API client abstraction, config loader, auth helpers, reporting integration.","license":"UNLICENSED","private":false,"type":"module","keywords":["playwright","e2e","testing","automation","test-framework"],"repository":{"type":"git","url":"git+https://github.com/emesoft/playwright-core.git"},"homepage":"https://github.com/emesoft/playwright-core#readme","bugs":{"url":"https://github.com/emesoft/playwright-core/issues"},"engines":{"node":">=18"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./config":{"types":"./dist/config/index.d.ts","import":"./dist/config/index.js","require":"./dist/config/index.cjs"},"./fixtures":{"types":"./dist/fixtures/index.d.ts","import":"./dist/fixtures/index.js","require":"./dist/fixtures/index.cjs"},"./api":{"types":"./dist/api/index.d.ts","import":"./dist/api/index.js","require":"./dist/api/index.cjs"},"./auth":{"types":"./dist/auth/index.d.ts","import":"./dist/auth/index.js","require":"./dist/auth/index.cjs"},"./ui":{"types":"./dist/ui/index.d.ts","import":"./dist/ui/index.js","require":"./dist/ui/index.cjs"},"./logging":{"types":"./dist/logging/index.d.ts","import":"./dist/logging/index.js","require":"./dist/logging/index.cjs"},"./errors":{"types":"./dist/errors/index.d.ts","import":"./dist/errors/index.js","require":"./dist/errors/index.cjs"},"./reporting":{"types":"./dist/reporting/index.d.ts","import":"./dist/reporting/index.js","require":"./dist/reporting/index.cjs"},"./di":{"types":"./dist/di/index.d.ts","import":"./dist/di/index.js","require":"./dist/di/index.cjs"},"./utils":{"types":"./dist/utils/index.d.ts","import":"./dist/utils/index.js","require":"./dist/utils/index.cjs"},"./data":{"types":"./dist/data/index.d.ts","import":"./dist/data/index.js","require":"./dist/data/index.cjs"},"./expect":{"types":"./dist/expect/index.d.ts","import":"./dist/expect/index.js","require":"./dist/expect/index.cjs"},"./package.json":"./package.json"},"scripts":{"build":"tsup","prepare":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","lint":"eslint .","test:browser":"playwright test"},"peerDependencies":{"@playwright/test":">=1.40.0"},"dependencies":{"dotenv":"^16.4.0","pino":"^9.0.0","zod":"^3.23.0"},"optionalDependencies":{"allure-js-commons":"^3.0.0","allure-playwright":"^3.0.0"},"devDependencies":{"@playwright/test":"^1.47.0","@types/node":"^20.14.0","eslint":"^9.9.0","tsup":"^8.2.0","typescript":"^5.5.0","typescript-eslint":"^8.0.0","vitest":"^2.0.0"},"publishConfig":{"access":"public"},"_id":"@emesoft_company/playwright-core@2.2.0","_integrity":"sha512-oIzfTr2wqYX8pzBFhfeKx2T4mU82jF6G7/OawFsQTEQwBCbNNtGychQa9B2kT1d7HTorqhovzpRYMtabnoTTwg==","_resolved":"E:\\Projects\\Tester\\Playwrite\\playwright-core\\emesoft_company-playwright-core-2.2.0.tgz","_from":"file:emesoft_company-playwright-core-2.2.0.tgz","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-oIzfTr2wqYX8pzBFhfeKx2T4mU82jF6G7/OawFsQTEQwBCbNNtGychQa9B2kT1d7HTorqhovzpRYMtabnoTTwg==","shasum":"0872847718ad16fde50cd43c76d6fff8995d8b08","tarball":"https://registry.npmjs.org/@emesoft_company/playwright-core/-/playwright-core-2.2.0.tgz","fileCount":92,"unpackedSize":1094191,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHL3MqboD7T37QQEbp848Au6LhEGSrCHU/6+dq0//XK6AiA5V3Bc6rqzxRPszXyFEtykuPFGDxwy0ezlJilNIaXIDg=="}]},"_npmUser":{"name":"paul.ngo","email":"phien.ngo@emesoft.net"},"directories":{},"maintainers":[{"name":"huy.dinh","email":"it@emesoft.net"},{"name":"paul.ngo","email":"phien.ngo@emesoft.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/playwright-core_2.2.0_1787822519586_0.7164603078433538"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-26T04:26:44.013Z","modified":"2026-08-27T09:22:00.002Z","2.1.0":"2026-08-26T04:26:44.322Z","2.1.1":"2026-08-26T06:15:50.597Z","2.2.0":"2026-08-27T09:21:59.775Z"},"bugs":{"url":"https://github.com/emesoft/playwright-core/issues"},"license":"UNLICENSED","homepage":"https://github.com/emesoft/playwright-core#readme","keywords":["playwright","e2e","testing","automation","test-framework"],"repository":{"type":"git","url":"git+https://github.com/emesoft/playwright-core.git"},"description":"Shared Playwright automation core: fixtures, API client abstraction, config loader, auth helpers, reporting integration.","maintainers":[{"name":"huy.dinh","email":"it@emesoft.net"},{"name":"paul.ngo","email":"phien.ngo@emesoft.net"}],"readme":"# @emesoft_company/playwright-core\r\n\r\nShared, production-grade Playwright automation core consumed by independent test project\r\nrepositories. Provides fixtures, config loading, API client abstraction, auth helpers,\r\ngeneric UI base components, structured logging, retry/error handling, and optional Allure\r\nreporting integration.\r\n\r\nSee [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for how core and consuming projects\r\ninteract, [`docs/EXTENDING.md`](docs/EXTENDING.md) for override patterns,\r\n[`docs/PUBLISHING.md`](docs/PUBLISHING.md) for versioning/publishing strategy, and\r\n[`docs/NEW_PROJECT.md`](docs/NEW_PROJECT.md) for scaffolding a new project that consumes core\r\n(`scripts/scaffold-e2e-project.sh` + `templates/e2e-project/`).\r\n\r\n## Install (consuming projects)\r\n\r\nPublished on npm under the `emesoft_company` org:\r\n\r\n```bash\r\npnpm add @emesoft_company/playwright-core\r\n```\r\n\r\nFor local development across repos in the same workspace, a project can point at the local\r\nfolder instead via a `file:` dependency (see `docs/PUBLISHING.md`).\r\n\r\n## Develop\r\n\r\n```bash\r\npnpm install\r\npnpm build       # tsup -> dist/ (ESM + CJS + .d.ts)\r\npnpm test        # vitest unit tests for loader/retry/etc.\r\npnpm test:browser # Playwright tests for the ui/ wait helpers (needs a browser)\r\npnpm typecheck\r\n```\r\n\r\n## Package layout\r\n\r\n| Subpath | Purpose |\r\n|---|---|\r\n| `@emesoft_company/playwright-core` | Barrel export of the full public API |\r\n| `@emesoft_company/playwright-core/config` | Multi-environment config loader + zod schema |\r\n| `@emesoft_company/playwright-core/fixtures` | Base Playwright fixtures (logger, apiClient, auth, retry) |\r\n| `@emesoft_company/playwright-core/api` | API client abstraction over `APIRequestContext` |\r\n| `@emesoft_company/playwright-core/auth` | Token provider / JWT auth helpers |\r\n| `@emesoft_company/playwright-core/ui` | Generic `BasePage` / `BaseComponent` / `TableComponent`, plus `waitForStableVisible` / `waitForHidden` for flaky elements |\r\n| `@emesoft_company/playwright-core/logging` | Structured logger |\r\n| `@emesoft_company/playwright-core/errors` | `AppError` classes + `withRetry` helper |\r\n| `@emesoft_company/playwright-core/reporting` | Optional Allure reporter wiring |\r\n| `@emesoft_company/playwright-core/di` | Lightweight service container used by fixtures |\r\n| `@emesoft_company/playwright-core/utils` | `sleep`, `waitForCondition` (generic polling, outside UI locators), `deepMerge` |\r\n| `@emesoft_company/playwright-core/data` | Unique/random value generators (`uniqueId`, `uniqueEmail`, `isoDate`, …) |\r\n| `@emesoft_company/playwright-core/expect` | `expect` with `toHaveStatus` / `toMatchSchema` (also re-exported from `/fixtures`) |\r\n\r\n## What a project gets for free\r\n\r\n- **`defineE2EConfig()`** — the entire `playwright.config.ts` in three lines\r\n- **`TableComponent`** — cells by column name, whole-table `records()`, row filtering\r\n- **`BasePage` / `BaseComponent`** — safe click/fill/select/upload, scoped lookups, waits\r\n- **`ApiClient`** — bearer auth, retry on 5xx/429, zod-validated responses, assertable error statuses\r\n- **Auth** — one-time login (single or per role) with reusable storage state\r\n- **Diagnostics** — console/page errors and failed requests attached to the report automatically\r\n- **`cleanup`** — LIFO teardown for data a test created\r\n\r\nUpgrading from 1.x? See [`docs/MIGRATION-v2.md`](docs/MIGRATION-v2.md).\r\n","readmeFilename":"README.md"}