{"id":20770659,"url":"https://github.com/ably/test-observability","last_synced_at":"2026-04-18T20:32:24.253Z","repository":{"id":36954586,"uuid":"457335059","full_name":"ably/test-observability","owner":"ably","description":"A web app for storing and displaying information about unit test results.","archived":false,"fork":false,"pushed_at":"2025-01-09T19:04:03.000Z","size":581,"stargazers_count":0,"open_issues_count":20,"forks_count":1,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-03-11T19:49:17.741Z","etag":null,"topics":["testing"],"latest_commit_sha":null,"homepage":"https://test-observability.herokuapp.com/","language":"TypeScript","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/ably.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-09T11:44:33.000Z","updated_at":"2025-01-09T19:04:06.000Z","dependencies_parsed_at":"2023-12-14T19:45:53.145Z","dependency_job_id":"4feda332-9780-4e94-ad98-0b637807879f","html_url":"https://github.com/ably/test-observability","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ably/test-observability","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ably%2Ftest-observability","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ably%2Ftest-observability/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ably%2Ftest-observability/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ably%2Ftest-observability/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ably","download_url":"https://codeload.github.com/ably/test-observability/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ably%2Ftest-observability/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31984128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["testing"],"created_at":"2024-11-17T12:11:11.014Z","updated_at":"2026-04-18T20:32:24.141Z","avatar_url":"https://github.com/ably.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Test observability server\n\nThis is a web application which provides:\n\n- an API for uploading JUnit-format unit test results\n- a website for viewing aggregate information about all the uploaded test results\n\nYou might want to use it to observe trends in your test results — for example, finding out which tests fail most frequently. We’ve been using it for this purpose in https://github.com/ably/ably-cocoa/issues/1279.\n\n## Take a look at an example\n\nThe Ably SDK team is currently using it for observing the results of the [ably-cocoa SDK](https://github.com/ably/ably-cocoa)’s tests. You can take a look at our instance at https://test-observability.herokuapp.com/.\n\n## How it’s built\n\nIt’s written in [TypeScript](https://www.typescriptlang.org/), and uses the [Nest](https://nestjs.com/) web application framework and [TypeORM](https://github.com/typeorm/typeorm) ORM. It uses a PostgreSQL database for storage.\n\n## How to run it locally\n\n### Dependencies\n\nThe instructions here are for macOS only, but should be similar on other platforms.\n\n- [Node.js](https://nodejs.org/en/) version 22.13.0\n  - install using, for example, [nvm](https://github.com/nvm-sh/nvm) or `brew install node@22`\n- [PostgreSQL server](https://www.postgresql.org/)\n  - install using `brew install postgresql`\n\n### Setup instructions\n\n1. If you don’t already have a local PostgreSQL user, create one:\n\n   ```bash\n   $ sudo -u postgres createuser $USER --createdb\n   ```\n\n2. Create the database:\n\n   ```bash\n   $ createdb test_observation\n   ```\n\n3. Install dependencies:\n\n   ```bash\n   $ npm install\n   ```\n\n4. Run the server in development mode (will restart each time you change the code):\n\n   ```bash\n   $ npm run start:dev\n   ```\n\n5. You can now access the server at http://localhost:3000.\n\n## How to deploy it\n\nIt’s ready to be deployed to [Heroku](https://www.heroku.com). You just need to set a [config var](https://devcenter.heroku.com/articles/config-vars) containing a randomly-generated `TEST_OBSERVABILITY_AUTH_KEY` value.\n\n## How to upload results to it\n\nA couple of examples:\n\n- [test-observability-action](https://github.com/ably/test-observability-action/) is a GitHub action for uploading a JUnit report to an instance of this server\n- the [`local_dev_upload_test_results.sh`](https://github.com/ably/ably-cocoa/blob/main/Scripts/local_dev_upload_test_results.sh) and [`upload_test_results.sh`](https://github.com/ably/ably-cocoa/blob/main/Scripts/upload_test_results.sh) scripts in [ably-cocoa](https://github.com/ably/ably-cocoa)\n\n## Development tips\n\n### How to generate a migration\n\nIf you want to modify the database schema (e.g. add columns, change a column from nullable to non-nullable, …), you’ll need to do so using a [TypeORM migration](https://orkhan.gitbook.io/typeorm/docs/migrations). TypeORM is able to generate these migrations automatically from your entity files. Do the following:\n\n1. Update your entity `.ts` files to reflect the new characteristics of the schema.\n2. Generate the migration:\n   ```bash\n   $ npm exec typeorm migration:generate -- -n '\u003cinsert a good name for the migration here, e.g. MakeGithubBaseAndHeadRefsNullable\u003e'\n   ```\n\nMigrations are automatically run when the server starts up.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fably%2Ftest-observability","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fably%2Ftest-observability","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fably%2Ftest-observability/lists"}