{"id":13708414,"url":"https://github.com/nanlabs/automation-seed","last_synced_at":"2025-08-03T15:32:26.730Z","repository":{"id":39858717,"uuid":"448894670","full_name":"nanlabs/automation-seed","owner":"nanlabs","description":"Automation Seed is a e2e automation framework built on top of WebdriverIO v7 and Selenium that uses Selenoid for execution","archived":false,"fork":false,"pushed_at":"2024-04-13T00:28:14.000Z","size":4366,"stargazers_count":19,"open_issues_count":4,"forks_count":3,"subscribers_count":15,"default_branch":"main","last_synced_at":"2024-04-13T23:19:05.690Z","etag":null,"topics":["automation","hacktoberfest","selenium","selenoid","typescript","wdio","webdriverio","webdriverio-framework"],"latest_commit_sha":null,"homepage":"https://nanlabs.github.io/automation-seed/","language":"TypeScript","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/nanlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2022-01-17T12:58:27.000Z","updated_at":"2024-04-15T04:30:58.737Z","dependencies_parsed_at":"2024-03-17T02:41:10.038Z","dependency_job_id":"43e79342-2db6-4f32-ae29-d9275bdabb24","html_url":"https://github.com/nanlabs/automation-seed","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanlabs%2Fautomation-seed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanlabs%2Fautomation-seed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanlabs%2Fautomation-seed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nanlabs%2Fautomation-seed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nanlabs","download_url":"https://codeload.github.com/nanlabs/automation-seed/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225159712,"owners_count":17430168,"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":["automation","hacktoberfest","selenium","selenoid","typescript","wdio","webdriverio","webdriverio-framework"],"created_at":"2024-08-02T23:00:22.173Z","updated_at":"2024-11-18T10:29:01.967Z","avatar_url":"https://github.com/nanlabs.png","language":"TypeScript","funding_links":[],"categories":["Apps and Boilerplates"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003ch1\u003eAutomation Seed\u003c/h1\u003e\n\n[Docs](#) |\n[Contributing](https://github.com/nanlabs/automation-seed/blob/main/CONTRIBUTING.md)\n\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![Awesome](https://awesome.re/mentioned-badge.svg)](https://github.com/nanlabs/awesome-nan)\n[![Periodic Check][workflowbadge]][workflowurl]\n[![Report Deployment][deploydocsbadge]][deploydocsurl]\n[![License: MIT][licensebadge]][licenseurl]\n\n\u003c/div\u003e\n\n\u003e This project was generated using [create-awesome-node-app](https://www.npmjs.com/package/create-awesome-node-app). **DON'T USE THIS TEMPLATE AS IT!** Generate yours using the command and following the options in the interactive menu. Check the docs for more information!\n\nThe `Automation Seed` project template is designed to expedite, simplify, and secure the automation of **User Acceptance Testing**. Pre-configured with Webdriver \u0026 Selenium and entirely containerized with Docker, it's a plug \u0026 play solution that saves time and eliminates the need for cumbersome setup and configuration. Plus, with no hardcoded system or user credentials, it's a more secure solution for your QA automation needs.\n\n## Motivation\n\nTired of dealing with outdated and sluggish QA automation frameworks? We were too. That's why we created this repository to solve some of the common pain points, including:\n\n- Frameworks with outdated technologies\n- Cumbersome setup and configuration\n- Compatibility and configuration issues to run tests over different browsers\n- Security risks such as hardcoded system or user credentials within your config files\n- Limitations to support different environments with advanced CI/CD pipelines\n\n## Features\n\n- Works out-of-the-box, a plug \u0026 play solution that eliminates the need for cumbersome setup and configuration.\n- Secure! No more hardcoded system or user credentials\n- Entirely containerized with Docker for seamless testing across different environments.\n- Pre-configured with:\n    - Webdriver \u0026 Selenium for faster and easier testing\n    - Github actions for easy integration into your CI/CD pipeline\n    - Support major browsers including Chrome, Safari, Firefox, and Edge\n    - [Report page](https://nanlabs.github.io/automation-seed/) deployed, for test metrics and insights.\n- Built with the latest technologies and entirely in TypeScript, you can reuse those libraries to write your own tests.\n\n---\n\n## Quickstart\n\n**You’ll need to have Node 16.13.2 or later on your local development machine** (but it’s not required on the server). You can use [fnm](https://github.com/Schniz/fnm) to easily switch Node versions between different projects.\n\n```sh\n$ git clone git@github.com:nanlabs/automation-seed.git\n$ cd automation-seed\n$ fnm use\n$ yarn\n$ yarn test --help\n```\n\n## Dependencies\n\nThis installation guide assumes you have chocolatey for Windows, brew for Mac OS, or are running a Debian based Linux distro. Additionally, you should have FNM and yarn installed on your system.\n\n- **OpenJDK**: **This is an optional dependency that will be required only if you decide to run using your local capabilities**. JDK is required for being able to run tests locally on your machine. The only tested and proven version is OpenJDK 11 JRE.\n\n  - Linux: `sudo apt install openjdk-11-jre-headless`\n  - Mac: `brew tap AdoptOpenJDK/openjdk \u0026\u0026 brew install adoptopenjdk11-jre`\n  - Windows: `choco install adoptopenjdk11jre`\n\n- **NodeJS**: **You’ll need to have Node 16.13.2 or later on your local development machine**. You can use [fnm](https://github.com/Schniz/fnm) to easily switch Node versions between different projects.\n\n- **Framework Dependencies**: To intall the required dependencies, set the current active directory of a terminal session to the cloned repository location and run `yarn install`\n\n- **Visual Studio**: To be able to utilize debugging you'll need VS Code.\n\n## Executing Tests\n\nYou can specify the `suites` within `./config/wdio.suites.conf.ts`.\n\n### Available Scripts\n\n- `yarn test:local` will execute the tests using your local machine capabilities\n- `yarn test:remote` will execute the tests using the capabilities from Selenoid - Check the section [Remote Tests execution using Selenoid](#remote-tests-execution-using-selenoid) for more information about remote execution.\n- `yarn test:docker` - _Soon_.\n\n#### Execute Suite\n\n\u003e Example:\n\n```sh\nFIREFOX=1 yarn test:local --suite ci.periodic\n```\n\n#### Execute Spec Files\n\n\u003e Example:\n\n```sh\nFIREFOX=1 yarn test:local --spec \"./test/specs/**/*.ts\"\n```\n\n#### Capabilities\n\nYou can specify the following environment variables to set the capabilities you want to use:\n\n```sh\n# Will use upto one instance of chrome, upto three instances of firefox and 2 instances of safari\n# locally\nCHROME=1 FIREFOX=3 SAFARI=2 yarn test:local --suite ci.periodic\n\n# Will use upto two instances of chrome and one instance of firefox in the remote server\nCHROME=2 FIREFOX=1 yarn test:remote --suite ci.periodic\n```\n\n### Environment Variables\n\n- `WEBDRIVER_LOGLEVEL`: will specify the loglevel for webdriver. `info` by default.\n- `WEBDRIVER_SPEC_FILE_RETRIES`: The number of retry attempts for an entire specfile when it fails as a whole. `0` by default.\n- `OUTPUT_DIR`: if set, it will specify the directory in which we want to store all the logs. Will print the logs on the `stdout` by default.\n- `MAX_INSTANCES`, `CHROME`, `FIREFOX`, `SAFARI` are used to specify the capabilities of the test execution.\n- `BROWSER_VISIBLE` will execute the browser without `headless` mode.\n\n**Example:**\n\n```sh\nFIREFOX=1\nBROWSER_VISIBLE=true\nexport FIREFOX BROWSER_VISIBLE\nyarn test:local --suite ci.periodic\n```\n\n### Remote Tests execution using Selenoid\n\nWhen using the `remote` execution mode it is needed to provide a url and port for a running Selenium Hub. For that we hightly recommend using [Selenoid](https://github.com/aerokube/selenoid).\n\nYou can give it a try locally as follows:\n\n```sh\nyarn selenoid --start --ui # access to `http://localhost:8080` to see the Selenoid Dashboard\nFIREFOX=1 yarn test:remote --suite ci.periodic\n```\n\nyou can learn more about the `selenoid` script by running `yarn selenoid --help`.\n\nIt is possible to specify another Selenium Hub with the env variables `SELENIUM_HUB_HOST` and `SELENIUM_HUB_PORT`.\n\n## CI/CD\n\nWe have different workflows that will be used on CI/CD using Github Actions. The workflows will be executed using Selenoid so it is needed to only use the `yarn test:remote` script inside them:\n\nYou can go to [Actions](https://github.com/nanlabs/automation-seed/actions) to see the list of available workflows.\n\nFor example, you can use the Custom Workflow Execution to execute any specific suite on Github Actions using Selenoid:\n\n![image](https://user-images.githubusercontent.com/17727170/170927815-498019e1-ef7b-4bba-8694-9a1c79805c45.png)\n\n---\n\n## Config Files\n\nConfig files are used to specify the settings for the browser, logging, reporter and other configurations. Each config is setup for a different environment with the server or local runner set and the browers to run the tests on defined.\n\nThe different configs can be found under `./config/`. Each config inherits from `wdio.common.conf.ts` but a config property set in the main config can be overwritten in any inherited config.\n\n### Reporters\n\nWe use two different reporters in this framework. This allows to have results displayed either to the terminal used for executing tests or sent directly to GitHub Pages.\n\n### Spec\n\nTest reporter, that prints detailed results to console and is useful for running and debugging tests locally.\n\n## Creating Tests\n\nYou can read the full documentation about how to create tests, the existing tools and design patterns we use [here](./TESTS_DESIGN.md)\n\n[workflowbadge]: https://github.com/nanlabs/automation-seed/actions/workflows/periodic.yml/badge.svg\n[deploydocsbadge]: https://github.com/nanlabs/automation-seed/actions/workflows/main.yml/badge.svg\n[licensebadge]: https://img.shields.io/badge/License-MIT-blue.svg\n[workflowurl]: https://github.com/nanlabs/automation-seed/actions/workflows/periodic.yml\n[deploydocsurl]: https://github.com/nanlabs/automation-seed/actions/workflows/main.yml\n[licenseurl]: https://github.com/nanlabs/automation-seed/blob/main/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanlabs%2Fautomation-seed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnanlabs%2Fautomation-seed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnanlabs%2Fautomation-seed/lists"}