{"_id":"@api-core/test","_rev":"2-a3bc92f5641781a9cccc7093233f394e","name":"@api-core/test","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.2":{"name":"@api-core/test","version":"0.0.2","keywords":["api","client","playwright","testing","contract","type-safe","typescript"],"author":{"url":"https://github.com/shanmukaanem","name":"Shanmuka Chandra Teja Anem"},"license":"MIT","_id":"@api-core/test@0.0.2","maintainers":[{"name":"shanmukaanem","email":"shanmukaanem@gmail.com"}],"contributors":[{"name":"Shanmuka Chandra Teja Anem"}],"homepage":"https://github.com/QECore/api-core#readme","bugs":{"url":"https://github.com/QECore/api-core/issues"},"dist":{"shasum":"3357637bd3febc8bf8b292e8668bbc24cc6fe762","tarball":"https://registry.npmjs.org/@api-core/test/-/test-0.0.2.tgz","fileCount":6,"integrity":"sha512-If7f2UnkfcOKERW+9L1G82AJ+KLKukrnY662P1KcEB4V9pJdrIicJvrIV9a0deG/LNI//2UbducbppXpGayAMQ==","signatures":[{"sig":"MEQCIHo97k7SzCW1xpVl4lYY3yLE97WUi27dVY8riijQWleZAiB4ShGvzn6jFiWCOWrRXGju/b27CMusc/cFKCNAW6IEaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18181},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"03a78282d287a3199d80d9ec7e738663b64fa70e","scripts":{"build":"tsup && node ../../packages/build/cleanup.cjs"},"_npmUser":{"name":"shanmukaanem","email":"shanmukaanem@gmail.com"},"repository":{"url":"git+https://github.com/QECore/api-core.git","type":"git"},"_npmVersion":"10.8.2","description":"Typed API contracts and API testing utilities with Playwright integration.","directories":{},"sideEffects":false,"_nodeVersion":"20.19.0","dependencies":{"@api-core/client":"^0.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@playwright/test":"^1.62.0"},"peerDependencies":{"@playwright/test":">=1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/test_0.0.2_1786575473452_0.4573166999363023","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@api-core/test","version":"0.0.3","description":"Typed API contracts and API testing utilities with Playwright integration.","type":"module","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","default":"./dist/index.js"}},"sideEffects":false,"license":"MIT","author":{"name":"Shanmuka Chandra Teja Anem","url":"https://github.com/shanmukaanem"},"contributors":[{"name":"Shanmuka Chandra Teja Anem"}],"homepage":"https://github.com/QECore/api-core#readme","repository":{"type":"git","url":"git+https://github.com/QECore/api-core.git"},"bugs":{"url":"https://github.com/QECore/api-core/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"keywords":["api","client","playwright","testing","contract","type-safe","typescript"],"scripts":{"build":"tsup && node ../../packages/build/cleanup.cjs"},"dependencies":{"@api-core/client":"^0.0.3"},"devDependencies":{"@playwright/test":"^1.62.0"},"peerDependencies":{"@playwright/test":">=1.30.0"},"_id":"@api-core/test@0.0.3","gitHead":"fd4996f8de62b6dbe753efc2a109dc62758adb23","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-I1GWVwf8yaxi+tpTX42s5zwFYU/XlTyg2joQIcLgyYA1IbHRzDhrbXnFKt9TvE3QYLTe/Z9pOGSi+X+bQXDCZw==","shasum":"7e0c3a34cbc1af0f4223a8a520cdd72be08e91ce","tarball":"https://registry.npmjs.org/@api-core/test/-/test-0.0.3.tgz","fileCount":6,"unpackedSize":18989,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBVeQMs9wP1loiu0+FRrmhdMt+z1VE6pIy3fYosxqRKXAiBIZG8a5zfuu/CHauRtw05xJHSJpzcJrdrwdQrkhOH6ww=="}]},"_npmUser":{"name":"shanmukaanem","email":"shanmukaanem@gmail.com"},"directories":{},"maintainers":[{"name":"shanmukaanem","email":"shanmukaanem@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/test_0.0.3_1788465485431_0.1845174530803162"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T22:57:53.262Z","modified":"2026-09-03T19:58:05.749Z","0.0.2":"2026-08-12T22:57:53.645Z","0.0.3":"2026-09-03T19:58:05.576Z"},"bugs":{"url":"https://github.com/QECore/api-core/issues"},"author":{"name":"Shanmuka Chandra Teja Anem","url":"https://github.com/shanmukaanem"},"license":"MIT","homepage":"https://github.com/QECore/api-core#readme","keywords":["api","client","playwright","testing","contract","type-safe","typescript"],"repository":{"type":"git","url":"git+https://github.com/QECore/api-core.git"},"description":"Typed API contracts and API testing utilities with Playwright integration.","contributors":[{"name":"Shanmuka Chandra Teja Anem"}],"maintainers":[{"name":"shanmukaanem","email":"shanmukaanem@gmail.com"}],"readme":"# @api-core/test\n\nPlaywright test integration for API-Core projects.\n\n## Features\n\n- 🎭 **Native Playwright Integration**: Strongly typed fixtures for API registries and authentication.\n- ⚡ **Zero Boilerplate**: Compose registries with `createApiTest({ registries })` and consume fixtures directly.\n- 🔒 **Type-Safe User Isolation**: Context-isolated authentication with `auth.use('viewer')`.\n- 🧩 **1:1 Fixture Mapping**: Each registry becomes exactly one fixture (`users.call('get')`), and auth is a separate fixture (`auth`).\n\n## Quick Start\n\n### 1. Define Registries\n\n```ts\n// registry.ts\nimport { createApi, createAuthApi, createApiRegistry } from '@api-core/test';\n\nexport const auth = createAuthApi({\n  method: 'POST',\n  endpoint: '/login',\n  users: {\n    admin: { email: 'admin@example.com', password: 'secret' },\n    viewer: { email: 'viewer@example.com', password: 'secret' },\n  },\n  defaultUser: 'admin',\n  token: 'data.accessToken',\n});\n\nconst getUser = createApi({\n  method: 'GET',\n  endpoint: '/users/{{userId}}',\n});\n\nexport const users = createApiRegistry({\n  apis: {\n    get: getUser,\n  },\n  config: {\n    baseUrl: process.env.API_BASE_URL || 'https://api.example.com',\n    data: {\n      userId: 123,\n    },\n  },\n});\n```\n\n### 2. Export Fixtures\n\n```ts\n// fixtures/api.fixture.ts\nimport { createApiTest } from '@api-core/test';\nimport { users, auth } from '../registry';\n\nexport const test = createApiTest({\n  registries: {\n    users,\n  },\n  auth,\n});\n\nexport { expect } from '@playwright/test';\n```\n\n### 3. Write API Tests\n\n```ts\nimport { test, expect } from './fixtures/api.fixture';\n\ntest('gets user details', async ({ users }) => {\n  const response = await users.call('get');\n  expect(response.status).toBe(200);\n});\n\ntest('viewer authentication', async ({ auth, users }) => {\n  await auth.use('viewer');\n  const response = await users.call('get');\n  expect(response.status).toBe(200);\n});\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}