{"id":19722684,"url":"https://github.com/cloudposse/test-harness","last_synced_at":"2025-10-12T05:45:39.953Z","repository":{"id":40669396,"uuid":"147548493","full_name":"cloudposse/test-harness","owner":"cloudposse","description":"🧬 Collection of Makefiles and test scripts to facilitate testing Terraform modules, Kubernetes resources, Helm charts, and more","archived":false,"fork":false,"pushed_at":"2025-09-16T17:04:32.000Z","size":95,"stargazers_count":31,"open_issues_count":0,"forks_count":8,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-09-16T19:51:43.456Z","etag":null,"topics":["bats","helm","terraform","test-automation","test-harness","testing-tools"],"latest_commit_sha":null,"homepage":"https://cloudposse.com/accelerate","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudposse.png","metadata":{"funding":{"github":"cloudposse"},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-09-05T16:32:27.000Z","updated_at":"2025-09-16T17:04:35.000Z","dependencies_parsed_at":"2025-09-16T19:06:08.827Z","dependency_job_id":"404da5d2-96eb-4257-8cb8-fd83f961cc75","html_url":"https://github.com/cloudposse/test-harness","commit_stats":null,"previous_names":[],"tags_count":46,"template":false,"template_full_name":null,"purl":"pkg:github/cloudposse/test-harness","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse%2Ftest-harness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse%2Ftest-harness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse%2Ftest-harness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse%2Ftest-harness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudposse","download_url":"https://codeload.github.com/cloudposse/test-harness/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudposse%2Ftest-harness/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010329,"owners_count":26084737,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bats","helm","terraform","test-automation","test-harness","testing-tools"],"created_at":"2024-11-11T23:18:07.675Z","updated_at":"2025-10-12T05:45:39.947Z","avatar_url":"https://github.com/cloudposse.png","language":"Shell","funding_links":["https://github.com/sponsors/cloudposse"],"categories":[],"sub_categories":[],"readme":"\n\n\u003c!-- markdownlint-disable --\u003e\n# test-harness \u003ca href=\"https://cpco.io/homepage?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=\"\u003e\u003cimg align=\"right\" src=\"https://cloudposse.com/logo-300x69.svg\" width=\"150\" /\u003e\u003c/a\u003e\n\n\n\u003ca href=\"https://g.codefresh.io/public/accounts/cloudposse/pipelines/cloudposse/test-harness/test-harness\"\u003e\u003cimg src=\"https://g.codefresh.io/api/badges/pipeline/cloudposse/cloudposse%2Ftest-harness%2Ftest-harness?type=cf-1\" alt=\"Codefresh Build Status\"/\u003e\u003c/a\u003e\u003ca href=\"https://github.com/cloudposse/test-harness/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/release/cloudposse/test-harness.svg\" alt=\"Latest Release\"/\u003e\u003c/a\u003e\u003ca href=\"https://slack.cloudposse.com\"\u003e\u003cimg src=\"https://slack.cloudposse.com/badge.svg\" alt=\"Slack Community\"/\u003e\u003c/a\u003e\u003ca href=\"https://cloudposse.com/support/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Get_Support-success.svg?style=for-the-badge\" alt=\"Get Support\"/\u003e\u003c/a\u003e\n\n\n\u003c!-- markdownlint-restore --\u003e\n\n\u003c!--\n\n\n\n\n  ** DO NOT EDIT THIS FILE\n  **\n  ** This file was automatically generated by the `cloudposse/build-harness`.\n  ** 1) Make all changes to `README.yaml`\n  ** 2) Run `make init` (you only need to do this once)\n  ** 3) Run`make readme` to rebuild this file.\n  **\n  ** (We maintain HUNDREDS of open source projects. This is how we maintain our sanity.)\n  **\n\n\n\n\n\n--\u003e\n\nCollection of Makefiles and test scripts to facilitate testing Terraform modules, Kubernetes resources, Helm charts, and more.\n\n## Prerequisites\n\n1. [Bats-core](https://github.com/bats-core/bats-core)\n1. Bash v5+\n  - If you're on Mac, you're possibly running Bash v3. You can upgrade via homebrew: `brew install bash`\n\n\n\n\n\n\n\n## Usage\n\nUse the `test-harness` Docker image as the base image in the application `Dockerfile`, and copy the modules from `tests` folder into `/tests/` folder in the Docker container.\n\n```dockerfile\nFROM cloudposse/test-harness:0.25.0 as test-harness\n\n# Get latest release from https://github.com/cloudposse/geodesic/releases\nFROM cloudposse/geodesic:2.11.3-alpine\n\n# Copy root modules into /conf folder\nCOPY --from=test-harness /tests/ /tests/\n```\n\n\n\n\n\n\n\n\n\n\n\u003c!-- markdownlint-disable --\u003e\n## Makefile Targets\n```text\nAvailable targets:\n\n  build                               Build docker image\n  help                                Help screen\n  help/all                            Display help for all targets\n  help/short                          This help short screen\n\n```\n\u003c!-- markdownlint-restore --\u003e\n\n\n\n\n## References\n\nFor additional context, refer to some of these links.\n\n- [Cloud Posse Documentation](https://docs.cloudposse.com) - Complete documentation for the Cloud Posse solution\n\n\n\n\n## ✨ Contributing\n\nThis project is under active development, and we encourage contributions from our community.\n\n\n\nMany thanks to our outstanding contributors:\n\n\u003ca href=\"https://github.com/cloudposse/test-harness/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=cloudposse/test-harness\u0026max=24\" /\u003e\n\u003c/a\u003e\n\nFor 🐛 bug reports \u0026 feature requests, please use the [issue tracker](https://github.com/cloudposse/test-harness/issues).\n\nIn general, PRs are welcome. We follow the typical \"fork-and-pull\" Git workflow.\n 1. Review our [Code of Conduct](https://github.com/cloudposse/test-harness/?tab=coc-ov-file#code-of-conduct) and [Contributor Guidelines](https://github.com/cloudposse/.github/blob/main/CONTRIBUTING.md).\n 2. **Fork** the repo on GitHub\n 3. **Clone** the project to your own machine\n 4. **Commit** changes to your own branch\n 5. **Push** your work back up to your fork\n 6. Submit a **Pull Request** so that we can review your changes\n\n**NOTE:** Be sure to merge the latest changes from \"upstream\" before making a pull request!\n\n\n## Running Terraform Tests\n\nWe use [Atmos](https://atmos.tools) to streamline how Terraform tests are run. It centralizes configuration and wraps common test workflows with easy-to-use commands.\n\nAll tests are located in the [`test/`](test) folder.\n\nUnder the hood, tests are powered by Terratest together with our internal [Test Helpers](https://github.com/cloudposse/test-helpers) library, providing robust infrastructure validation.\n\nSetup dependencies:\n- Install Atmos ([installation guide](https://atmos.tools/install/))\n- Install Go [1.24+ or newer](https://go.dev/doc/install)\n- Install Terraform or OpenTofu\n\nTo run tests:\n\n- Run all tests:  \n  ```sh\n  atmos test run\n  ```\n- Clean up test artifacts:  \n  ```sh\n  atmos test clean\n  ```\n- Explore additional test options:  \n  ```sh\n  atmos test --help\n  ```\nThe configuration for test commands is centrally managed. To review what's being imported, see the [`atmos.yaml`](https://raw.githubusercontent.com/cloudposse/.github/refs/heads/main/.github/atmos/terraform-module.yaml) file.\n\nLearn more about our [automated testing in our documentation](https://docs.cloudposse.com/community/contribute/automated-testing/) or implementing [custom commands](https://atmos.tools/core-concepts/custom-commands/) with atmos.\n\n### 🌎 Slack Community\n\nJoin our [Open Source Community](https://cpco.io/slack?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=slack) on Slack. It's **FREE** for everyone! Our \"SweetOps\" community is where you get to talk with others who share a similar vision for how to rollout and manage infrastructure. This is the best place to talk shop, ask questions, solicit feedback, and work together as a community to build totally *sweet* infrastructure.\n\n### 📰 Newsletter\n\nSign up for [our newsletter](https://cpco.io/newsletter?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=newsletter) and join 3,000+ DevOps engineers, CTOs, and founders who get insider access to the latest DevOps trends, so you can always stay in the know.\nDropped straight into your Inbox every week — and usually a 5-minute read.\n\n### 📆 Office Hours \u003ca href=\"https://cloudposse.com/office-hours?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=office_hours\"\u003e\u003cimg src=\"https://img.cloudposse.com/fit-in/200x200/https://cloudposse.com/wp-content/uploads/2019/08/Powered-by-Zoom.png\" align=\"right\" /\u003e\u003c/a\u003e\n\n[Join us every Wednesday via Zoom](https://cloudposse.com/office-hours?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=office_hours) for your weekly dose of insider DevOps trends, AWS news and Terraform insights, all sourced from our SweetOps community, plus a _live Q\u0026A_ that you can’t find anywhere else.\nIt's **FREE** for everyone!\n## License\n\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003ePreamble to the Apache License, Version 2.0\u003c/summary\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\nComplete license is available in the [`LICENSE`](LICENSE) file.\n\n```text\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\n  https://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n```\n\u003c/details\u003e\n\n## Trademarks\n\nAll other trademarks referenced herein are the property of their respective owners.\n\n\n---\nCopyright © 2017-2025 [Cloud Posse, LLC](https://cpco.io/copyright)\n\n\n\u003ca href=\"https://cloudposse.com/readme/footer/link?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=cloudposse/test-harness\u0026utm_content=readme_footer_link\"\u003e\u003cimg alt=\"README footer\" src=\"https://cloudposse.com/readme/footer/img\"/\u003e\u003c/a\u003e\n\n\u003cimg alt=\"Beacon\" width=\"0\" src=\"https://ga-beacon.cloudposse.com/UA-76589703-4/cloudposse/test-harness?pixel\u0026cs=github\u0026cm=readme\u0026an=test-harness\"/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudposse%2Ftest-harness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudposse%2Ftest-harness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudposse%2Ftest-harness/lists"}