{"id":37049422,"url":"https://github.com/thomasduft/testr","last_synced_at":"2026-01-14T05:44:40.468Z","repository":{"id":266274323,"uuid":"874616981","full_name":"thomasduft/testr","owner":"thomasduft","description":"A command-line tool for managing and executing automated test cases with browser support.","archived":false,"fork":false,"pushed_at":"2026-01-13T11:56:59.000Z","size":1594,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T14:41:19.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","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/thomasduft.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-18T06:44:35.000Z","updated_at":"2026-01-13T11:57:03.000Z","dependencies_parsed_at":"2025-03-26T02:24:16.857Z","dependency_job_id":"44f361e7-febe-4a93-8b3e-8b72ed6bb339","html_url":"https://github.com/thomasduft/testr","commit_stats":null,"previous_names":["thomasduft/testr"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/thomasduft/testr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasduft%2Ftestr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasduft%2Ftestr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasduft%2Ftestr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasduft%2Ftestr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomasduft","download_url":"https://codeload.github.com/thomasduft/testr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasduft%2Ftestr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28411321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":[],"created_at":"2026-01-14T05:44:39.900Z","updated_at":"2026-01-14T05:44:40.456Z","avatar_url":"https://github.com/thomasduft.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![build](https://github.com/thomasduft/testr/actions/workflows/build.yml/badge.svg)](https://github.com/thomasduft/testr/actions/workflows/build.yml)\n[![NuGet](https://img.shields.io/nuget/vpre/tomware.testr.svg)](https://www.nuget.org/packages/tomware.testr)\n\n# testr\n\nA command-line tool for managing and executing automated test cases with browser support.\n\n## Introduction\n\n`testr` is a powerful CLI tool designed to streamline test case management and execution. It provides comprehensive support for running automated end-to-end tests across multiple browsers, validating test case definitions, and creating new test cases with a file-based approach.\n\n### Key Features\n\n- 🌐 **Multi-browser support** - Run tests on Chrome, Firefox, and WebKit\n- 📝 **File-based test definitions** - Maintain test cases as markdown files\n- 🔄 **Test execution history** - Track and store test run results\n- 🧪 **Dynamic variables** - Support for parameterized test data\n- 📊 **OpenTelemetry integration** - Built-in observability and monitoring\n- ✅ **Test validation** - Validate test case definitions before execution\n\n## Vision \u0026 Workflow\n\nThe vision of `testr` is to provide a tool-agnostic, file-based approach to test case management. The typical workflow follows these steps:\n\n1. **Define Use Cases** - Teams create high-level use case documentation\n2. **Create Test Case Definitions** - Convert use cases into executable test case definitions\n   📄 [Example: TC-Login-001 Definition](samples/Definitions/localhost/TC-Login-001.md)\n3. **Execute Tests** - Run automated end-to-end tests against target environments\n   ![Sample Test Run](TC-001-Login-Run.gif)\n4. **Store Results** - Each execution creates a historical test run record\n   📄 [Example: TC-Login-001 Run](samples/Runs/localhost/TC-Login-001.md)\n\n\u003e **Note:** When escaping strings in test data, use double quotes `\"`. For example:\n\u003e `Locator=GetByText Text=\"Invalid login attempt for user 'Albert'\" Action=IsVisible`\n\n## Installation\n\n### Prerequisites\n\n- [.NET 9.0 SDK](https://dotnet.microsoft.com/download/dotnet/9.0) or later\n\n### Option 1: Install from NuGet (Recommended)\n\nInstall `testr` globally using the .NET tool command:\n\n```bash\ndotnet tool install -g tomware.testr\n```\n\n### Option 2: Build from Source\n\nClone the repository and build the project:\n\n```bash\ngit clone https://github.com/thomasduft/testr.git\ncd testr\ndotnet build\n```\n\nFor local development and testing, run the installation script:\n\n```bash\n./install.sh\n```\n\n## Usage\n\n### Quick Start\n\n```bash\n# Create a new test case\ntestr test-case TC-Login-001 \"User Login Test\"\n\n# Validate a test case definition\ntestr validate TC-Login-001\n\n# Run a test case\ntestr run https://localhost:5001 --test-case-id TC-Login-001\n```\n\n### Command Overview\n\n```bash\nA cli tool to manage and run executable test cases.\n\nUsage: testr [command] [options]\n\nOptions:\n  -?|-h|--help  Show help information.\n\nCommands:\n  man           Display syntax help for writing test data within test cases\n  playwright    Playwright-specific commands and utilities\n  run           Execute test case definitions\n  test-case     Create new test case definitions\n  validate      Validate existing test case definitions\n\nRun 'testr [command] -?|-h|--help' for more information about a command.\n```\n\n## Detailed Command Reference\n\n### `run` - Execute Test Cases\n\nExecute test case definitions against target environments.\n\n```bash\ntestr run [domain] [options]\n```\n\n**Options:**\n- `-tc|--test-case-id` - Test Case ID to execute (e.g., `TC-Audit-001`)\n- `-i|--input-directory` - Directory containing test case definitions (default: `.`)\n- `-o|--output-directory` - Directory for storing test results\n- `--headless` - Run browser in headless mode (default: `false`)\n- `--continue-on-failure` - Continue execution on test failures (default: `false`)\n- `-s|--slow` - Slow down execution by specified milliseconds (default: `500`)\n- `-t|--timeout` - Playwright locator timeout in milliseconds (default: `10000`)\n- `-bt|--browser-type` - Browser to use: `Chrome`, `Firefox`, `Webkit` (default: `Chrome`)\n- `-rvd|--record-video-dir` - Directory for recording test execution videos\n- `-v|--variable` - Define variables for test data replacement\n- `--otlp` - OpenTelemetry endpoint for metrics collection\n\n**Example:**\n```bash\ntestr run https://localhost:5001 \\\n  --test-case-id TC-Login-001 \\\n  --browser-type Chrome \\\n  --record-video-dir ./videos \\\n  --variable Username=testuser --variable Password=secret123\n```\n\n### `test-case` - Create Test Cases\n\nCreate new test case definition files.\n\n```bash\ntestr test-case [test-case-id] [title]\n```\n\n**Example:**\n```bash\ntestr test-case TC-Registration-001 \"User Registration Flow\"\n```\n\n### `validate` - Validate Test Cases\n\nValidate the syntax and structure of test case definitions.\n\n```bash\ntestr validate [test-case-id] [options]\n```\n\n**Options:**\n- `-i|--input-directory` - Directory containing test case definitions (default: `.`)\n\n**Example:**\n```bash\ntestr validate TC-Login-001 --input-directory ./test-definitions\n```\n\n## Advanced Features\n\n### Variable Support\n\nUse variables to inject dynamic or sensitive data into test cases. Variables are defined in test steps using the `@` prefix:\n\n```markdown\n| 1 | enter password | Locator=GetByLabel Text=Password Action=Fill Value=@Password | password is entered | - |\n```\n\nPass variable values at runtime:\n\n```bash\ntestr run https://localhost:5001 \\\n  --test-case-id TC-Login-001 \\\n  --variable Password=mysecretpassword \\\n  --variable Username=testuser\n```\n\n\u003e ⚠️ **Important:** Variable keys are case-sensitive!\n\n### OpenTelemetry Integration\n\nEnable comprehensive observability and monitoring for your test executions:\n\n```bash\ntestr run https://localhost:5001 \\\n  --test-case-id TC-Login-001 \\\n  --otlp \"http://localhost:9090/api/v1/otlp/v1/metrics\"\n```\n\nThis allows you to:\n- Track test execution metrics\n- Monitor performance trends\n- Integrate with observability platforms like Prometheus and Grafana\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n---\n\n**Happy Testing!** 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasduft%2Ftestr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomasduft%2Ftestr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasduft%2Ftestr/lists"}