{"id":13484104,"url":"https://github.com/prisma/ecosystem-tests","last_synced_at":"2025-04-12T19:43:28.132Z","repository":{"id":36963214,"uuid":"227850434","full_name":"prisma/ecosystem-tests","owner":"prisma","description":"🥼🧬🧪🔬🧫🦠 - Continuously tests Prisma Client with various operating systems, frameworks, platforms, databases and more.","archived":false,"fork":false,"pushed_at":"2025-04-10T19:00:37.000Z","size":1692704,"stargazers_count":203,"open_issues_count":138,"forks_count":25,"subscribers_count":16,"default_branch":"dev","last_synced_at":"2025-04-10T20:36:17.499Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prisma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-13T13:50:51.000Z","updated_at":"2025-04-10T19:00:42.000Z","dependencies_parsed_at":"2023-10-04T03:27:20.329Z","dependency_job_id":"99b277c2-d6a6-406c-ab9e-418dc0827413","html_url":"https://github.com/prisma/ecosystem-tests","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prisma%2Fecosystem-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prisma%2Fecosystem-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prisma%2Fecosystem-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prisma%2Fecosystem-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prisma","download_url":"https://codeload.github.com/prisma/ecosystem-tests/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625478,"owners_count":21135512,"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","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":[],"created_at":"2024-07-31T17:01:19.471Z","updated_at":"2025-04-12T19:43:28.111Z","avatar_url":"https://github.com/prisma.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Prisma Ecosystem Tests\n\nThis repository continuously tests Prisma Client on and with various operating systems, databases, frameworks, platforms and other setups.\n\n| CI Status                                                                                                                                                                                      | Branch        |\n| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |\n| [![test dev](https://github.com/prisma/ecosystem-tests/workflows/test/badge.svg?branch=dev)](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Atest+branch%3Adev) | `dev` |\n| [![test latest](https://github.com/prisma/ecosystem-tests/workflows/test/badge.svg?branch=latest)](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Atest+branch%3Alatest)                | `latest`      |\n| [![test patch-dev](https://github.com/prisma/ecosystem-tests/workflows/test/badge.svg?branch=patch-dev)](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Atest+branch%3Apatch-dev)       | `patch-dev`   |\n| [![test integration](https://github.com/prisma/ecosystem-tests/workflows/test/badge.svg?branch=integration)](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Atest+branch%3Aintegration) | `integration` |\n| [![check-for-update](https://github.com/prisma/ecosystem-tests/workflows/check-for-update/badge.svg)](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Acheck-for-update)                 | -             |\n\n\nYou can check out the latest test runs by checking the [\"test\" workflow results](https://github.com/prisma/ecosystem-tests/actions?query=workflow%3Atest).\n\n## How it works\n\n### Projects and Tests\n\nThe tests are defined in `.github/workflows/test.yaml` and `.github/workflows/optional-test.yaml`, and the test projects live in folder of form `foo/bar` in this repository. Each `foo` has one or multiple jobs in the GitHub Actions Workflows, and the `bar`s are part of the matrix per job.\n\n- All of the jobs run `.github/scripts/test-project.sh`, which then executes the test project.\n- The test project can install additional dependencies such as CLIs in the optional `prepare.sh`. \n- The standard entrypoint to set up your projects is `run.sh`. This includes installing dependencies, deploying etc.\n- Test are then triggered via `test.sh`.\n- Any clean up or logging work can then be done in `finally.sh` which is executed in all cases, even when the tests fail.\n\n**Note:** You need to use `pnpm` as it's used for bumping dependencies; i.e. run `pnpm install` as a first step in your `run.sh` script.   \n**Note:** It's important to add `prisma` as a `devDependency` and `@prisma/client` as a normal `dependency` in each project's `package.json`.\n\n### Database \n\nMost tests use a database. The GitHub workflow creates and provides a `DATABASE_URL` to all jobs, and `.github/scripts/test-project.sh` runs `prisma db push` to make sure the project's schema exists on the database.\n\nProjects that use an external database use a different environment variable name from `DATABASE_URL`.\n\nOn AWS we use the following 4 databases for these tests:\n- `e2e-tests-postgres.cdoyhcosd7km.us-east-1.rds.amazonaws.com` (AWS ORM Ecosystem Tests  275927176912 us-east-1)\n- `e2e-tests-sqlserver.cdoyhcosd7km.us-east-1.rds.amazonaws.com` (AWS ORM Ecosystem Tests  275927176912 us-east-1)\n- `postgres-e2e-ts.cg7tbvsdqlrs.eu-central-1.rds.amazonaws.com` (AWS Management Account 243760423205 eu-central-1)\n- `e2e-tests-sql-server.cg7tbvsdqlrs.eu-central-1.rds.amazonaws.com` (AWS Management Account 243760423205 eu-central-1)\n\n### Updates\n\n#### Dependency\n\nRenovate is enabled for this repository for all dependencies except `prisma` and `@prisma/client`. Our own script handles upgrading prisma-related dependencies since Renovate is too slow for our use case.\n\n#### Prisma\n\nWhen there is a new version, [Prismo](https://github.com/prisma-bot) works tirelessly to commit and push a bump commit, triggering the tests. This is implemented in `.github/workflows/check-for-update.yaml` using a GitHub Action cron job. Since the cron job is limited to run each 5 minutes, we just run each cron job for exactly 5 minutes and check for updates each 10 seconds in each run. This check only runs in the default branch `dev`.\n\n### Branches and npm channels\n\nThe default `dev` branch of this repository contains the test projects with the development version of Prisma CLI and Prisma Client (`@dev` on npm). These dependencies are kept up to date with a GitHub Action workflow, which updates them every time a new version of Prisma is released.\n\nThere are also the branches `latest`, `patch-dev` and `integration`, which mirror the code from `dev` (synced via a GitHub Action workflow), but they use the respective development channels of Prisma CLI and Prisma Client from npm instead (`@latest`, `@patch-dev` and `@integration`, also updated via a GitHub Action workflow). Thanks to the test coverage of all projects, this can point us to incompatibilities early.\n\n### Checking Test Results\n\nTo check the current status of this repository somewhere else, you can use [a simple shell script](https://gist.github.com/steebchen/80fb6e3a60aec0f095090618f90473ec).\n\n## Contributing\n\nWe use [conventional commits](https://www.conventionalcommits.org) (also known as semantic commits) to ensure consistent and descriptive commit messages.\n\n## Development Workflow\n\nWe develop directly against GitHub Actions. The workflow looks like this:\n\n1. Checkout a branch\n2. Make your changes\n3. Push your changes to a PR on GitHub\n4. Inspect the running Checks\n\n### How to add or adapt test projects\n\n1. First add a matrix run entry in `.github/workflows/test.yaml` under the category the project falls into. For example, if you're adding a new platform into the `platforms` folder, put a new line named after your project folder in `.github/workflows/test.yaml` under `jobs.platforms.strategy.matrix.platform`.\n2. Create that folder\n3. Create the required test project files into that folder\n\n### Shell scripts\n\nPlease write POSIX-compliant scripts (not bash) and use the the following template for all of your sh files to make sure they exit on errors (`-e`) and undefined variables (`-u`):\n\n```shell script\n#!/bin/sh\n\nset -eux\n\n# ...\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprisma%2Fecosystem-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprisma%2Fecosystem-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprisma%2Fecosystem-tests/lists"}