{"id":19218578,"url":"https://github.com/sitespeedio/onlinetest","last_synced_at":"2025-07-16T03:36:48.659Z","repository":{"id":241675173,"uuid":"802073615","full_name":"sitespeedio/onlinetest","owner":"sitespeedio","description":"Deploy your own version of sitespeed.io online.","archived":false,"fork":false,"pushed_at":"2025-07-10T05:31:09.000Z","size":1995,"stargazers_count":20,"open_issues_count":7,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-14T00:47:23.597Z","etag":null,"topics":["webperformance"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sitespeedio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"zenodo":null},"funding":{"github":["soulgalore"],"patreon":null,"open_collective":"sitespeedio","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2024-05-17T13:22:22.000Z","updated_at":"2025-07-10T05:31:12.000Z","dependencies_parsed_at":"2024-06-09T15:43:27.944Z","dependency_job_id":"fada6c8b-111c-4941-ae8c-d4b0fa531f65","html_url":"https://github.com/sitespeedio/onlinetest","commit_stats":{"total_commits":203,"total_committers":2,"mean_commits":101.5,"dds":0.07389162561576357,"last_synced_commit":"22b8bb9155279891f6d19428e108cc4edd41424f"},"previous_names":["sitespeedio/onlinetest"],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/sitespeedio/onlinetest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitespeedio%2Fonlinetest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitespeedio%2Fonlinetest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitespeedio%2Fonlinetest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitespeedio%2Fonlinetest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sitespeedio","download_url":"https://codeload.github.com/sitespeedio/onlinetest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sitespeedio%2Fonlinetest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265479607,"owners_count":23773572,"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":["webperformance"],"created_at":"2024-11-09T14:27:16.069Z","updated_at":"2025-07-16T03:36:48.629Z","avatar_url":"https://github.com/sitespeedio.png","language":"JavaScript","readme":"[![Test the API](https://github.com/sitespeedio/onlinetest/actions/workflows/api.yml/badge.svg)](https://github.com/sitespeedio/onlinetest/actions/workflows/api.yml)\n[![Test the GUI](https://github.com/sitespeedio/onlinetest/actions/workflows/gui.yml/badge.svg)](https://github.com/sitespeedio/onlinetest/actions/workflows/gui.yml)\n[![Using Docker](https://github.com/sitespeedio/onlinetest/actions/workflows/docker.yml/badge.svg)](https://github.com/sitespeedio/onlinetest/actions/workflows/docker.yml)\n[![Lint](https://github.com/sitespeedio/onlinetest/actions/workflows/lint.yml/badge.svg)](https://github.com/sitespeedio/onlinetest/actions/workflows/lint.yml)\n\n[Website](https://www.sitespeed.io/) | [Documentation](https://www.sitespeed.io/documentation/onlinetest/) | [Changelog server](https://github.com/sitespeedio/onlinetest/blob/main/server/CHANGELOG.md) | [Changelog testrunner](https://github.com/sitespeedio/onlinetest/blob/main/testrunner/CHANGELOG.md) | [Bluesky](https://bsky.app/profile/sitespeed.io) | [Mastodon](https://fosstodon.org/@sitespeedio)\n\n# Onlinetest - deploy your own version of sitespeed.io online.\n\nSetup your own online version of sitespeed.io. You get:\n\n* **A server with GUI and API**:\n   - Add tests using a HTML frontend (you can style the frontend using your own CSS)\n   ![Start screen](https://raw.githubusercontent.com/sitespeedio/onlinetest/refs/heads/main/img/startscreen.png)\n   - Add tests using [the command line](https://www.sitespeed.io/documentation/onlinetest/#using-the-api) (using `sitespeed.io --api.hostname my.host.com --api.location default https://www.sitespeed.io`)\n   \n* **Test Runners**:\n   - Run your tests on different platforms: desktop, emulated mobile and Android.\n\n* **Search Functionality**:\n   - Easily find the results of your tests.\n      ![Search screen](https://raw.githubusercontent.com/sitespeedio/onlinetest/refs/heads/main/img/search.png)\n\n\n## Quick setup on your local machine (using Docker)\n\nFollow these steps to quickly set up and run the online version of sitespeed.io on your local Linux or Mac OS machine. Make sure you have [Docker](https://www.docker.com) and [docker compose](https://docs.docker.com/compose/) installed.\n\n1. **Clone the repository:**\n\n    ```bash\n    git clone https://github.com/sitespeedio/onlinetest.git\n    ```\n\n2. **Navigate to the project directory:**\n\n    ```bash\n    cd onlinetest\n    ```\n\n3. **Start the Docker containers (Redis/PostgreSQL/Minio/sitespeed.io server and testrunner):**\n\n    ```bash\n    docker compose -f docker-compose.yml -f docker-compose.app.yml up\n    ```\n\nNow you can open your web browser and navigate to [http://127.0.0.1:3000](http://127.0.0.1:3000) to run your first test.\n\nIf you are on Linux you need to run `sudo modprobe ifb numifbs=1` to be able to set different connectivites inside of Docker. On Mac you can only run native connectivity when you run inside of Docker.\n\nYou can also run the server and testrunner [directly]() using NodeJS if you don't want to run Docker.\n\n### Configuration\nYou can configure everything that you are used to configure with sitespeed.io + more. The server and the testrunner takes `--config /path/to/file`.\n\nYou can also use the **[.env](https://github.com/sitespeedio/onlinetest/blob/main/.env)** file for some common configuration to setup the server/testrunner.\n\n### Change which pages/URLs you can test\nThere's a regular expression that validates the domain of the URL that you want to test. You can use this to make sure a public instance only can tests pages on your web sites.\n\n```VALID_TEST_DOMAINS=\".*\"```\n\n### Update sitespeed.io version\nBy default latest major release of sitespeed.io is configured, it looks like this in the **.env** file:\n`SITESPEED_IO_CONTAINER=\"sitespeedio/sitespeed.io:35\"`\n\nWhen 36 is released you just switch to:\n`SITESPEED_IO_CONTAINER=\"sitespeedio/sitespeed.io:36\"`\n\nTo get latest version of 35 you need to periodically pull down the version:\n```docker pull sitespeedio/sitespeed.io:35```\n\nIf you want to run a specific version, you can pin the version to a specific version:\n`SITESPEED_IO_CONTAINER=\"sitespeedio/sitespeed.io:35.0.0\"`\n\n#### Access the result\nRunning on your own machine the result is served from localhost. If you deploy on a server you want to change that:\n\n```RESULT_BASE_URL=\"http://127.0.0.1:9000/sitespeedio\"```\n\nBy default the result is served by [MinIO](https://min.io) on port 9000. If you serve the result on the URL `https://sitespeed.domain.com` you change your result base to: ```RESULT_BASE_URL=\"https://sitespeed.domain.com/sitespeedio\"```\n\n#### Update server and testrunner\nYou can configure which version of the server and the testrunner you want to use. You can either use latest stable version or specify a specific tag. In the *.env* file you configure which Docker tag to use.\n\n```\nSITESPEED_IO_SERVER_VERSION=1\nSITESPEED_IO_TESTRUNNER_VERSION=1\n```\n\n## Using NodeJS\nIf you do not want to use Docker for the server and the testrunner you can use NodeJS libraries directly. Install the testrunner and the server:\n\n```bash\nnpm install @sitespeed.io/server -g\nnpm install @sitespeed.io/testrunner -g\n```\n\nYou then need the depencencies (PostgreSQL/KeyDB etc) and the easiet way to get them running is to use the docker compose file:\n\n```bash\ngit clone https://github.com/sitespeedio/onlinetest.git\ncd onlinetest\ndocker compose up\n```\n\nThen start the testrunner and the server:\n\n```bash\nsitespeed.io-testrunner\nsitespeed.io-server s\n```\n\nIn the real world you want to also supply your own configuration files. Default [server configuration](https://github.com/sitespeedio/onlinetest/blob/main/server/config/default.yaml) and [testrunner configuration](https://github.com/sitespeedio/onlinetest/blob/main/testrunner/config/default.yaml):\n\n```bash\nsitespeed.io-testrunner --config path/to/testrunnerfile\nsitespeed.io-server --config path/to/file\n```\n\n## What's in the box?\n\nTo get it up and running (the [docker-compose file](https://github.com/sitespeedio/onlinetest/blob/main/docker-compose.yml)), you need:\n\n* **A Message broker**: - A Redis-like data storage/message broker. The default setup uses [keydb](https://docs.keydb.dev) and has also been tested with [Valkey](https://github.com/valkey-io/valkey).\n\n* **A Database**: - [PostgreSQL](https://www.postgresql.org) - the open source database.\n\n* **A Test Result Storage**: - Somewhere to store test results. The default setup uses [minio](https://min.io), an open source implementation of S3 but you can use all the result storages that work with sitespeed.io: S3, Google Cloud Storage or your own storage where you can scp the result.\n\nAdditionally, there's a server and one or multiple test runners that run the sitespeed.io tests.\n\n## Setup for production\nOnlinetest is super flexible and highly configurable. I'm working on the documentation and you will find the full documentation at [https://www.sitespeed.io/documentation/onlinetest](https://www.sitespeed.io/documentation/onlinetest) when it's ready.\n\n## Support\nRunning servers and testing costs money and you can help support sitespeed.io at [Open Collective](https://opencollective.com/sitespeedio).\n\n## License\n[AGPL-3.0 license](LICENSE).\n","funding_links":["https://github.com/sponsors/soulgalore","https://opencollective.com/sitespeedio"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitespeedio%2Fonlinetest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsitespeedio%2Fonlinetest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsitespeedio%2Fonlinetest/lists"}