{"data":{"slug":"erikengervall-dockest","name":"dockest","tagline":"Docker + Jest integration testing for Node.js","github_url":"https://github.com/erikengervall/dockest","owner":"erikengervall","repo":"dockest","owner_avatar_url":"https://avatars.githubusercontent.com/u/5392475?v=4","primary_language":"TypeScript","stars":110,"forks":17,"topics":["docker","docker-compose","hacktoberfest","integration-testing","jest","nodejs","testing","typescript"],"archived":false,"github_pushed_at":"2026-02-16T07:40:12+00:00","maintenance_label":"Slowing","url":"https://www.graphcanon.com/tools/erikengervall-dockest","markdown_url":"https://www.graphcanon.com/tools/erikengervall-dockest.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/erikengervall-dockest","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=erikengervall-dockest","description":"Docker + Jest integration testing for Node.js","homepage_url":"https://npmjs.com/package/dockest","license":"MIT","open_issues":50,"watchers":2,"ai_summary":null,"readme_excerpt":"## System requirements\n\nIn order to run Dockest, there's a few system requirements:\n\n- Dockest uses Jest's programmatic CLI and requires Jest **v20.0.0** or newer to work\n- [Docker](https://www.docker.com/)\n- [Docker Compose](https://docs.docker.com/compose/install/) (_\"On desktop systems like Docker Desktop for Mac and\n  Windows, Docker Compose is included as part of those desktop installs.\"_)\n\n---\n\n## Install\n\n```bash\nyarn add --dev dockest\n\n---\n\n# docker-compose.yml\nversion: '3.8'\n\nservices:\n  myRedis:\n    image: redis:5.0.3-alpine\n    ports:\n      - published: 6379\n        target: 6379\n```\n\n```ts\n// dockest.ts\nimport { Dockest } from 'dockest';\n\nconst dockest = new Dockest();\n\n// Specify the services from the Compose file that should be included in the integration test\nconst dockestServices = [\n  {\n    serviceName: 'myRedis', // Must match a service in the Compose file\n  },\n];\n\ndockest.run(dockestServices);\n```\n\n---\n\n# docker-compose.yml\nversion: '3.8'\n\nservices:\n  postgres: # (1)\n    image: postgres:9.6-alpine\n    ports:\n      - published: 5432\n        target: 5432\n    environment: # (2)\n      POSTGRES_DB: baby\n      POSTGRES_USER: dont\n      POSTGRES_PASSWORD: hurtme\n```\n\n```ts\n// dockest.ts\nimport { Dockest } from 'dockest';\n\nconst { run } = new Dockest();\n\nrun([\n  {\n    serviceName: 'postgres', // must match (1)\n    readinessCheck: async ({\n      defaultReadinessChecks: { postgres },\n      dockerComposeFileService: {\n        environment: { POSTGRES_DB, POSTGRES_USER }, // must match (2)\n      },\n    }) => postgres({ POSTGRES_DB, POSTGRES_USER }),\n  },\n]);\n```\n\n#### `defaultReadinessChecks.redis`\n\nThe default readiness check for Redis is based on this [image](https://hub.docker.com/_/postgres) which is\nplug-and-play.\n\n```yaml\n\n---\n\n# docker-compose.yml\nversion: '3.8'\n\nservices:\n  redis: # (1)\n    image: redis:5.0.3-alpine\n    ports:\n      - published: 6379\n        target: 6379\n```\n\n```ts\n// dockest.ts\nimport { Dockest } from 'dockest';\n\nconst { run } = new Dockest();\n\nrun([\n  {\n    serviceName: 'redis', // must match (1)\n    readinessCheck: ({ defaultReadinessChecks: { redis } }) => redis(),\n  },\n]);\n```\n\n#### `defaultReadinessChecks.web` [WIP]\n\nRequires [wget](https://www.gnu.org/software/wget/). The image would most likely be a self-built web service.\n\nThe exact use case should be fleshed out.\n\n```ts\n// dockest.ts\nimport { Dockest } from 'dockest';\n\nconst { run } = new Dockest();\n\nrun([\n  {\n    serviceName: 'web', // must match (1)\n    readinessCheck: async ({ defaultReadinessChecks: { web } }) => web(),\n  },\n]);\n```","github_created_at":"2018-12-23T19:15:00+00:00","created_at":"2026-07-11T13:33:50.146073+00:00","updated_at":"2026-07-11T13:48:08.270865+00:00","categories":[{"slug":"computer-vision","name":"Computer Vision","url":"https://www.graphcanon.com/categories/computer-vision","markdown_url":"https://www.graphcanon.com/categories/computer-vision.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/computer-vision"},{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"nodejs","name":"nodejs"},{"slug":"jest","name":"jest"},{"slug":"testing","name":"testing"},{"slug":"integration-testing","name":"integration-testing"},{"slug":"docker","name":"docker"},{"slug":"hacktoberfest","name":"hacktoberfest"},{"slug":"docker-compose","name":"docker-compose"},{"slug":"typescript","name":"typescript"}],"trust":{"provenance":{"is_fork":false,"github_id":162917577,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-11T13:48:07.989Z","maintenance":{"label":"Slowing","score":36,"methodology":"github_public_v1","releases_90d":0,"days_since_push":145,"last_release_at":"2023-10-23T13:23:16Z"},"security_summary":{"status":"not_scanned","scanner":null,"low_count":0,"high_count":0,"last_scan_at":null,"medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-07-11T13:33:57.185Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-07-11T13:33:57.185Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-07-11T13:33:57.185Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-07-11T13:33:57.185Z"}}}}