{"id":13711468,"url":"https://github.com/Shelex/cypress-parallel-specs-locally","last_synced_at":"2025-05-06T20:32:59.796Z","repository":{"id":55666134,"uuid":"182252784","full_name":"Shelex/cypress-parallel-specs-locally","owner":"Shelex","description":"Script for parallel Cypress specs execution locally","archived":false,"fork":false,"pushed_at":"2024-02-05T20:58:00.000Z","size":374,"stargazers_count":36,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-13T21:45:02.338Z","etag":null,"topics":["cypress","locally","parallel-tests"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shelex.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":"2019-04-19T11:12:14.000Z","updated_at":"2024-09-26T06:43:03.000Z","dependencies_parsed_at":"2024-05-13T00:33:02.840Z","dependency_job_id":"5bcfe4ea-da7a-4865-8e94-4f862a3e6132","html_url":"https://github.com/Shelex/cypress-parallel-specs-locally","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/Shelex%2Fcypress-parallel-specs-locally","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shelex%2Fcypress-parallel-specs-locally/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shelex%2Fcypress-parallel-specs-locally/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shelex%2Fcypress-parallel-specs-locally/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shelex","download_url":"https://codeload.github.com/Shelex/cypress-parallel-specs-locally/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252764760,"owners_count":21800740,"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":["cypress","locally","parallel-tests"],"created_at":"2024-08-02T23:01:08.565Z","updated_at":"2025-05-06T20:32:59.194Z","avatar_url":"https://github.com/Shelex.png","language":"JavaScript","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# cypress-parallel-specs-locally\n\n[![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://vshymanskyy.github.io/StandWithUkraine/)\n\nExample scripts to play with Cypress locally and running in several processes.\n\n# Arguments\n\nEach script supports arguments:\n\n-   `executors` - number of chainers which are picking specs to run;\n-   `filter` - filtering specs path by keyword;\n\n# Scripts\n\n## runner_recursive\n\nIs a pool of promises using recursion - [runner_recursive.js](cypress/scripts/runner_recursive.js)\n\n### Commands\n\n-   `yarn cy:run:recursive` - single executor\n-   `yarn cy:run:recursive:parallel:empty` - with filtering\n-   `yarn cy:run:recursive:parallel` - all specs\n\n## runner_queue\n\nIs an event based runner with queue - [runner_queue.js](cypress/scripts/runner_queue.js). Node v12+ is required.\n\n`runner_queue` tries to solve an issue with several Cypress xvfb instances spawned at same time and fighting for same resource causing skipping some suites. Now a parameter `timeout` could be configured, which blocks new instance from spawning cypress if timeout from previous start has not finished. Value of `timeout` should be some +/- average time between starting cypress and opened browser, and it depends on your test suite size and available machine resources.\n\n### Commands\n\n-   `yarn cy:run:queue` - single executor\n-   `yarn cy:run:queue:parallel:empty` - with filtering\n-   `yarn cy:run:queue:parallel` - all specs\n\n## runner_recursive_service\n\nIs basically a `runner_recursive` but handles spec files with external [parallel-specs](https://github.com/Shelex/parallel-specs) service to distribute spec files across processes - [runner_recursive_service.js](cypress/scripts/runner_recursive_service.js)\n\nUses [parallel-specs-client](https://github.com/Shelex/parallel-specs-client) library to interact with parallel-specs service api.\n\n`runner_recursive_service` is meant to solve an issue of distributing spec files by their expected duration in order to optimize total execution time\n\n### Pre-requisites\n\n-   obtain account at [parallel-specs](https://parallel-specs.shelex.dev/)\n-   obtain api key at [api keys](https://parallel-specs.shelex.dev/apiKeys) page\n-   set `.env` file variables `PARALLEL_SPECS_PROJECT_NAME` and `PARALLEL_SPECS_API_KEY`, example - [example.env](example.env)\n\n### Commands\n\n-   `yarn cy:run:recursive:service` - single executor\n-   `yarn cy:run:recursive:service:parallel:empty` - with filtering\n-   `yarn cy:run:recursive:service:parallel` - all specs\n\nHow to run any command with mochawesome report:\n\n-   `yarn prereport`\n-   `yarn cy:run:recursive:parallel:empty`\n-   `yarn postreport`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShelex%2Fcypress-parallel-specs-locally","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FShelex%2Fcypress-parallel-specs-locally","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShelex%2Fcypress-parallel-specs-locally/lists"}