diff --git a/astro.config.mjs b/astro.config.mjs index 7492b37a..873fbef4 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -387,6 +387,7 @@ export default defineConfig({ { label: 'AI-Powered Features', link: '/advanced/ai-powered-features/ai-powered-features' }, { label: 'AI-Requirements', link: '/advanced/ai-powered-features/ai-requirements' }, { label: 'AI-Agents', link: '/advanced/ai-powered-features/ai-agents' }, + { label: 'AI Skills', link: '/advanced/ai-powered-features/ai-skills' }, { label: 'Voice Mode', link: '/advanced/ai-powered-features/voice-mode' }, ], }, @@ -463,6 +464,7 @@ export default defineConfig({ { label: 'Telegram', link: '/integrations/report-notifications/telegram' }, { label: 'Jira', link: '/integrations/report-notifications/jira' }, {label: 'Azure DevOps', link: '/integrations/report-notifications/azure-devops'}, + { label: 'Webhook', link: '/integrations/report-notifications/webhook' }, ], }, { @@ -506,6 +508,7 @@ export default defineConfig({ ], }, { label: 'Administration', link: '/management/company/administration' }, + { label: 'Clone Project Settings', link: '/management/company/clone-project-settings' }, { label: 'Audit Log', link: '/management/company/audit-log' }, { label: 'Trials', link: '/management/company/trials' }, { label: 'Subscriptions', link: '/management/company/subscriptions' }, diff --git a/src/content/docs/advanced/ai-powered-features/ai-agents.md b/src/content/docs/advanced/ai-powered-features/ai-agents.md index 535580a3..0979cd0a 100644 --- a/src/content/docs/advanced/ai-powered-features/ai-agents.md +++ b/src/content/docs/advanced/ai-powered-features/ai-agents.md @@ -39,11 +39,38 @@ These powerful AI-features are available in the **Enterprise plan**. - **Summarizes functional areas** by mapping tests to key modules or features. - **Identifies missing, never-executed, or placeholder tests**. - **Highlights critical gaps** in business logic, security, and performance testing. -- **Assesses release readiness** based on test data from the last 14 days. +- **Assesses release readiness** based on the test history for the period you choose (14 days by default). - **Provides actionable recommendations** to close gaps and improve completeness. ![Deep Analyze](./images/Deep_analyze.gif) +#### Launch Deep Analyze + +1. Open the **Tests** page. +2. Click the **⋯** button in the top-right corner, the last one next to **Chat with Tests**. +3. Select **AI Agents**. + +![The Tests page menu with AI Agents selected](./images/ai-agents-menu.png) + +4. In the **Agents** window, select **Deep Analyze** in the list on the left. Its parameters open on the right. +5. Set the parameters, or keep the defaults. +6. Click **Launch Agent**. + +![The Agents window with Deep Analyze selected and its parameters](./images/deep-analyze-parameters.png) + +| Parameter | What it does | +| --- | --- | +| **Period (days)** | How many days of test history to analyze. 14 by default, up to 365. | +| **Scope to suite** | Analyzes only one folder or suite and everything inside it. | +| **Filter by label** | Focuses on tests with this label or custom field. | +| **Filter by milestone** | Focuses on tests assigned to this milestone. | +| **Min tests in suite** | Skips suites with fewer tests than this number. 5 by default. | +| **Additional instructions** | Tells the agent what to focus on, for example "Focus on payment flows and ignore onboarding tests". | + +If the agent already ran in the last day, Testomat.io offers to open that result first. Click **Launch Anyway** to start a new run. + +On a large project, the analysis can take a while. You can close the window and find the result later in **Insights**. + --- ### 2. 🍿 Mark Flaky Tests diff --git a/src/content/docs/advanced/ai-powered-features/ai-powered-features.md b/src/content/docs/advanced/ai-powered-features/ai-powered-features.md index 0614aea6..b418d66a 100644 --- a/src/content/docs/advanced/ai-powered-features/ai-powered-features.md +++ b/src/content/docs/advanced/ai-powered-features/ai-powered-features.md @@ -104,7 +104,7 @@ This feature makes it easier to create comprehensive test suites. If you have at least one previously created test case, you can use this AI-feature to generate more test cases. 1. Open Test Suite that already contains Test Cases. -2. Click **'Extra menu'** button. +2. Click **⋯** button. 3. Select **'Suggest Tests'** option from the dropdown list. ![Testomat.io - AI-powered](./images/AI_8.gif) @@ -119,7 +119,7 @@ Testomat.io recommends adding only the necessary tests cases to your suite! You can also use this AI feature to suggest tests based solely on the Suite Description. 1. Open Test Suite with a description. -2. Click **'Extra menu'** button. +2. Click **⋯** button. 3. Select **'Suggest Tests'** option from the dropdown list. ![Testomat.io - AI-powered](./images/AI_Suggest_tests_1.gif) @@ -197,7 +197,7 @@ If you have a "draft" description that is messy or lacks detail, the AI rewrites **How to use this feature:** 1. Open Test Case with you want to refine. -2. Click **'Extra menu'** button on 'Description' tab. +2. Click **⋯** button on 'Description' tab. 3. Select **'Suggest Better Description'** option from the dropdown menu. ![Testomat.io - Suggest Better Test Case Description](./images/Suggest_Better_Description_1.png) @@ -207,6 +207,26 @@ If you have a "draft" description that is messy or lacks detail, the AI rewrites ![Testomat.io - Suggest Better Test Case Description](./images/Suggest_Better_Description_2.png) +## Generate a Description from a Screenshot + +Turn the screenshots attached to a test into steps, expected results, and test data. This works in Classical projects, and the test needs at least one image attachment. + +![The menu next to Improve Description with Generate from Screenshot selected](./images/generate-from-screenshot.png) + +1. Open the test and attach the screenshots. +2. On the **Description** tab, click the **⋯** button next to **Improve Description** (or **Suggest Description**, if the test has no description yet). +3. Select **Generate from Screenshot**. +4. Review the result on the **Suggested Action** tab. To compare it with what the test has now, open **Current test**. +5. Click **Update Test Description**. + +![The Generate description from screenshot window with the analyzed screenshots and the suggested description](./images/generate-from-screenshot-result.png) + +The new steps are added below your existing description, so nothing you wrote is lost. Want a different result? Type what to change in the **Follow up** field and click **Follow Up**. + +The same option works for suites: click **Update Suite Description** at the end. + +AI reads up to three new images at a time, each up to 10 MB. Screenshots that are already in the description are skipped. + ## Generate Test Case Description Based on Test Code Use AI to analyze your test code and produce detailed test descriptions. Bridges the gap between technical code and human-readable documentation, improving collaboration between technical and non-technical team members: @@ -227,17 +247,6 @@ Test Summary is created: ::: -## Generate Code Based on Test Case Description - -Provide a test description, and the AI generates the corresponding test automation code. Please note that generated code may be not completely comprehensive. - -Code will be created based on the project framework settings and other tests in this suite. -Use it as boilerplate code only. - -To check your Project framework settings go to Project Settings page: - -![Testomat.io - AI-powered](./images/Project_settings.png) - ## Test Case & Code Quality Review The AI-powered **Quality Review** feature can be used for for both manual test descriptions and automated test code. It allows you to analyze your tests and provides intelligent feedback with actionable advice to improve clarity, structure, and adherence to best practices. @@ -272,7 +281,7 @@ This feature evaluates the quality of a manual test’s description, suggesting 1. Go to 'Tests'. 2. Select the Test Case with description you want to review. -3. On 'Description' tab, click **'Extra menu'** button. +3. On 'Description' tab, click **⋯** button. 4. Select **'Test Quality Review'** option from the dropdown list.. ![Testomat.io - AI-powered](./images/Test_quality_review_1.gif) @@ -283,7 +292,7 @@ This feature reviews your automated test code to detect potential issues, enhanc 1. Go to 'Tests'. 2. Select Test Case with the code that you want to review. -3. On 'Code' tab, click **'Extra menu'** button. +3. On 'Code' tab, click **⋯** button. 4. Select **'Test Quality Review'** option from the dropdown list.. ![Testomat.io - AI-powered](./images/Test_code_review_1.gif) @@ -300,7 +309,7 @@ To use this feature: 1. Go to 'Tests'. 2. Select a Test Case that you want to check for duplicates. -3. On 'Description' tab, click **'Extra menu'** button. +3. On 'Description' tab, click **⋯** button. 4. Select **'Find Duplicates'** option from the dropdown list.. 5. Click **'Remove'** button to delete the identified duplicate tests from your project. @@ -389,7 +398,7 @@ Testomat.io allows you to use AI-powered feature to analyze and summarize your f 1. Go to 'Tests'. 2. Select the Suite that you want to analyze. -3. Click **'Extra menu'** button on 'Summarize' button. +3. Click **⋯** button on 'Summarize' button. 4. Select **'Analyze Suite'** option from the dropdown menu. ![Testomat.io - AI-powered](./images/AI_Analyze_Suite_1.png) @@ -475,7 +484,7 @@ Results generated by AI-features are automatically saved to the **'Insights'** s **Access the 'Insights' Section:** 1. Go to 'Tests' page. -2. Click **'Extra menu'** button in the header. +2. Click **⋯** button in the header. 3. Select **'Insights'** option from the dropdown menu. ![Testomat.io - Insights](./images/Insights_2.png) @@ -514,7 +523,7 @@ With just a few clicks, you can generate a professional, shareable PDF version o **How to export AI-report:** 1. Go to 'Tests' page. -2. Click **'Extra menu'** button in the header. +2. Click **⋯** button in the header. 3. Select **'Insights'** option from the dropdown menu. ![Testomat.io - Insights](./images/Insights_2.png) @@ -523,7 +532,7 @@ With just a few clicks, you can generate a professional, shareable PDF version o ![Testomat.io - Insights](./images/Insights_5.png) -5. Click **'Extra menu'** button within the report view. +5. Click **⋯** button within the report view. 6. Select **'Export as PDF'** from the dropdown menu. ![Testomat.io - Insights](./images/Insights_6.png) diff --git a/src/content/docs/advanced/ai-powered-features/ai-requirements.md b/src/content/docs/advanced/ai-powered-features/ai-requirements.md index 00aa8963..fb1f56e1 100644 --- a/src/content/docs/advanced/ai-powered-features/ai-requirements.md +++ b/src/content/docs/advanced/ai-powered-features/ai-requirements.md @@ -16,7 +16,7 @@ Testomat.io introduces another AI-powered feature - **AI-Requirements** that hel A dedicated **'Requirements'** page brings all your requirements into a single, convenient workspace, where you can view, organize, and update all requirements in one place, eliminating the need to jump between different parts of a project. -When you add a **Requirement source** (Jira issue, Confluence page, PDF file, etc.) in Testomat.io, the system analyzes the description and automatically generates a structured requirement summary. You can also view all suites linked to a requirement, the original source, and any added attachments directly from the 'Requirement details' page. +When you add a **Requirement source** (Jira issue, Confluence page, Linear issue, PDF file, etc.) in Testomat.io, the system analyzes the description and automatically generates a structured requirement summary. You can also view all suites linked to a requirement, the original source, and any added attachments directly from the 'Requirement details' page. ![Testomat.io - AI-powered](./images/Requirement_page_details_1.gif) @@ -69,7 +69,7 @@ You can enbable AI at any time on Company Settings page by following the instruc You can add requirements to a new project to drive test generation from the start. -Once a project is created (BDD or Classical), set up the integration for your **Requirement Source** (see detailed instructions for [JIRA](https://docs.testomat.io/integrations/issues-management/jira/#connecting-to-jira-project) and [Confluence](https://docs.testomat.io/integrations/issues-management/confluence)). Then, proceed with adding requirements: +Once a project is created (BDD or Classical), set up the integration for your **Requirement Source** (see detailed instructions for [JIRA](https://docs.testomat.io/integrations/issues-management/jira/#connecting-to-jira-project), [Confluence](https://docs.testomat.io/integrations/issues-management/confluence), and [Linear](https://docs.testomat.io/integrations/issues-management/linear)). Then, proceed with adding requirements: 1. Open **'Requirements'** page. 2. Click **'+New Requirements'** or **'+Add Requirement'** button. @@ -162,6 +162,19 @@ Access **'Requirements'** page via **'Extra menu'** button on **'Tests'** page. ![Testomat.io - Confluence](./images/Confluence_Req_1.gif) +## Linear as a Requirement Source + +Use a Linear issue as a requirement and build tests from it. First connect Linear to your project, see [Linear](https://docs.testomat.io/integrations/issues-management/linear). + +1. Go to the **'Requirements'** page. +2. Click **'+ New'** and select **'New Linear requirement'**. +3. Paste the Linear issue key, such as `ENG-123`, or its URL into **'Issue ID'**. +4. Click **'Save'**. + +Testomat.io imports the issue title and description, and AI writes a summary of the requirement. From here, link an existing suite or let AI generate one. + +Linear requirements refresh once a day. To get the latest version right away, use [Refresh the Requirement](#refresh-the-requirement). + ## Files & Text as a Requirement Source Testomat.io allows you to use not only Jira or Confluence as a Requirement Source, but also add text files, docs, spreadsheets or even screenshots and images. diff --git a/src/content/docs/advanced/ai-powered-features/ai-skills.md b/src/content/docs/advanced/ai-powered-features/ai-skills.md new file mode 100644 index 00000000..3fbcce9b --- /dev/null +++ b/src/content/docs/advanced/ai-powered-features/ai-skills.md @@ -0,0 +1,76 @@ +--- +title: AI Skills +description: Install Testomat.io AI Skills for Claude Code, Cursor, and Copilot. Each skill teaches your coding agent one testing workflow, from writing test cases to syncing them back to Testomat.io. +type: article +url: https://docs.testomat.io/advanced/ai-powered-features/ai-skills +head: + - tag: meta + attrs: + name: keywords + content: Testomat.io, AI Skills, Claude Code, Cursor, Copilot, coding agent, skills CLI, test cases, QA workflow +--- + +Teach your coding agent how to test. Each AI Skill covers one testing workflow, such as writing test cases or finding duplicates. + +**Before You Start** + +- Company should be on the Enterprise plan. +- Use a coding agent such as Claude Code, Cursor, or Copilot. +- Install Node.js is installed. + +## Open AI Skills + +1. Open the **Tests** page. +2. Click the **⋯** button in the top-right corner, next to **Chat with Tests**. +3. Select **AI Skills**. You'll find it in the AI group of the menu, below **AI Agents** and **MCP Server**. + +![The Tests page menu with AI Skills below AI Agents and MCP Server](./images/ai-skills-menu.png) + +The **Testomat.io AI Skills** panel opens on the right. + +:::note + +AI Skills are available on the Enterprise plan. On other plans, **AI Skills** is greyed out in the menu. See [Plan Features Comparison](https://docs.testomat.io/management/company/plan-features-comparison). + +::: + +## Install the Skills + +1. In the **Install** section, click the copy icon next to the install command. +2. Run the command in your project: + +```bash +npx skills add testomatio/skills +``` + +3. Pick the skills you want in the menu, and choose whether to install them for this project or for all projects. + +![The Testomat.io AI Skills panel with the install command and the list of skills](./images/ai-skills-page.png) + +Your agent now has the skills. Describe a task, for example "write test cases for the login page", and it uses the matching skill. + +## Update the Skills + +Run this command to get the latest version of the skills you installed: + +```bash +npx skills update +``` + +## Available Skills + +| Skill | What it does | +| --- | --- | +| `qa-write-test-cases` | Writes test cases and checklists from requirements, tickets, or feature descriptions. | +| `qa-thinking` | Looks at a feature the way a tester does: edge cases, negative flows, and unobvious scenarios. | +| `qa-explain-behavior` | Answers questions about how the product behaves. | +| `improve-test-cases` | Makes existing Markdown test cases clearer. | +| `detect-duplicate-test-cases` | Finds duplicates, near-duplicates, and overlaps. | +| `sync-test-cases-with-tms` | Syncs Markdown test cases between your project and Testomat.io. | + +For the full catalog and setup for each agent, see [testomat.ai/qa-skills](https://testomat.ai/qa-skills). + +## Next Steps + +- [MCP - Connect with a Config File](https://docs.testomat.io/tutorials/mcp-connection) +- [AI-Powered Features](https://docs.testomat.io/advanced/ai-powered-features) diff --git a/src/content/docs/advanced/ai-powered-features/images/Project_settings.png b/src/content/docs/advanced/ai-powered-features/images/Project_settings.png deleted file mode 100644 index 116e4bc3..00000000 Binary files a/src/content/docs/advanced/ai-powered-features/images/Project_settings.png and /dev/null differ diff --git a/src/content/docs/advanced/ai-powered-features/images/ai-agents-menu.png b/src/content/docs/advanced/ai-powered-features/images/ai-agents-menu.png new file mode 100644 index 00000000..97e097f2 Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/ai-agents-menu.png differ diff --git a/src/content/docs/advanced/ai-powered-features/images/ai-skills-menu.png b/src/content/docs/advanced/ai-powered-features/images/ai-skills-menu.png new file mode 100644 index 00000000..3ce868d5 Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/ai-skills-menu.png differ diff --git a/src/content/docs/advanced/ai-powered-features/images/ai-skills-page.png b/src/content/docs/advanced/ai-powered-features/images/ai-skills-page.png new file mode 100644 index 00000000..49c42eac Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/ai-skills-page.png differ diff --git a/src/content/docs/advanced/ai-powered-features/images/deep-analyze-parameters.png b/src/content/docs/advanced/ai-powered-features/images/deep-analyze-parameters.png new file mode 100644 index 00000000..063a8b0f Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/deep-analyze-parameters.png differ diff --git a/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot-result.png b/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot-result.png new file mode 100644 index 00000000..af04bdca Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot-result.png differ diff --git a/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot.png b/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot.png new file mode 100644 index 00000000..178b8a48 Binary files /dev/null and b/src/content/docs/advanced/ai-powered-features/images/generate-from-screenshot.png differ diff --git a/src/content/docs/advanced/api-access/index.md b/src/content/docs/advanced/api-access/index.md index 02059fec..f4efe138 100644 --- a/src/content/docs/advanced/api-access/index.md +++ b/src/content/docs/advanced/api-access/index.md @@ -112,6 +112,10 @@ GET /api/{project_id}/testruns?run_id={run_id} ## Public API v2 Public API v2 uses the same request and response shape for every endpoint. That makes it easier to write an integration and easier for an AI agent to use. It supports requests to a branch, grouped counts, run statistics, analytics, and pagination. For additional information see [Testomat.io API Reference](https://app.testomat.io/docs/openapi). + +Public API v2 also lets you import suites from a CSV, XLS, or XLSX file, share tests and suites in bulk by their IDs or labels, and create and update milestones. + +Run responses also include when a run was launched and finished, and the test runs list can return the test version and description for each result. ### Testomat.io MCP Server v2.0 diff --git a/src/content/docs/advanced/milestones/index.md b/src/content/docs/advanced/milestones/index.md index 56757f1b..4bc8d7c7 100644 --- a/src/content/docs/advanced/milestones/index.md +++ b/src/content/docs/advanced/milestones/index.md @@ -63,6 +63,8 @@ Milestones are automatically grouped by type name in a case-insensitive manner. ::: +You can also create and update milestones through Public API v2. A milestone created this way belongs to that project only. See the [API Reference](https://app.testomat.io/docs/public-api#tag/milestones). + ## Milestone types Milestones are grouped by type. Testomat.io ships with built-in types - **Milestone**, **Release**, and **Sprint** - and you can add your own. diff --git a/src/content/docs/advanced/tql/images/tql-ai-query.png b/src/content/docs/advanced/tql/images/tql-ai-query.png new file mode 100644 index 00000000..56730c9a Binary files /dev/null and b/src/content/docs/advanced/tql/images/tql-ai-query.png differ diff --git a/src/content/docs/advanced/tql/index.md b/src/content/docs/advanced/tql/index.md index b2d58da3..e348ce10 100644 --- a/src/content/docs/advanced/tql/index.md +++ b/src/content/docs/advanced/tql/index.md @@ -153,6 +153,20 @@ By using the `in` operator, you reduce the risk of syntax errors (like missing a ::: +### Write a Query in Plain Words + +With AI features turned on, describe what you need and AI writes the query for you. The editor shows the hint "Enter your request as a text and AI will generate the query." It works in the query editors on the **Tests** and **Runs** pages. + +1. Click the **Query Language Editor** button next to the search field. +2. Type your request, for example `manual runs that finished and have defects`. +3. Click **Apply**. + +![The Tests Query Editor with a plain-language request and the AI Apply button](./images/tql-ai-query.png) + +AI turns your request into TQL and filters the list. If you type TQL yourself, it's used as is. + +If AI can't build a query, make the request more specific or write the TQL directly. + ## Tests Variables In previous section we used `tag` in the query. `tag` is an allowed query variable. Here is a comprehenisve list of variables you can use in the query: diff --git a/src/content/docs/getting-started/images/dashboard-projects.png b/src/content/docs/getting-started/images/dashboard-projects.png new file mode 100644 index 00000000..e29c73d3 Binary files /dev/null and b/src/content/docs/getting-started/images/dashboard-projects.png differ diff --git a/src/content/docs/getting-started/index.md b/src/content/docs/getting-started/index.md index ef21f649..133cfe2f 100644 --- a/src/content/docs/getting-started/index.md +++ b/src/content/docs/getting-started/index.md @@ -57,6 +57,10 @@ Use [Classical Project](https://docs.testomat.io/project/tests/classical-test-ca You have just created your first project! +Your new project appears on the **Dashboard** with your other projects. Each project card shows its avatar, test count, and project type, so you can find the one you need at a glance. + +![The Dashboard with project cards, each showing the project avatar, test count, and project type](./images/dashboard-projects.png) + Now you can start creating suites and test cases for your projects. ## Create a Suite diff --git a/src/content/docs/integrations/continuous-integration/index.mdx b/src/content/docs/integrations/continuous-integration/index.mdx index 9f63837d..793d9962 100644 --- a/src/content/docs/integrations/continuous-integration/index.mdx +++ b/src/content/docs/integrations/continuous-integration/index.mdx @@ -51,6 +51,12 @@ CI configuration has 3 steps: Follow the guide for a corresponding CI to set it up. +:::tip + +Before you save a CI connection, click **Test Connection** to check the values you entered. + +::: + :::note Please ensure that Testomat.io IP addresses are allowed to access your CI environment: 142.132.185.19, 5.75.250.20 diff --git a/src/content/docs/integrations/issues-management/images/linear/1-linear-new-api-key.png b/src/content/docs/integrations/issues-management/images/linear/1-linear-new-api-key.png new file mode 100644 index 00000000..574719bd Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/1-linear-new-api-key.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/2-linear-create-api-key.png b/src/content/docs/integrations/issues-management/images/linear/2-linear-create-api-key.png new file mode 100644 index 00000000..e5f919a4 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/2-linear-create-api-key.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/3-linear-copy-api-key.png b/src/content/docs/integrations/issues-management/images/linear/3-linear-copy-api-key.png new file mode 100644 index 00000000..62e85610 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/3-linear-copy-api-key.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/4-connect-to-ims.png b/src/content/docs/integrations/issues-management/images/linear/4-connect-to-ims.png new file mode 100644 index 00000000..17b6a932 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/4-connect-to-ims.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/5-linear-profile.png b/src/content/docs/integrations/issues-management/images/linear/5-linear-profile.png new file mode 100644 index 00000000..e0ddcc06 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/5-linear-profile.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/6-linear-profile-menu.png b/src/content/docs/integrations/issues-management/images/linear/6-linear-profile-menu.png new file mode 100644 index 00000000..c6665b2e Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/6-linear-profile-menu.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/7-link-to-issue-menu.png b/src/content/docs/integrations/issues-management/images/linear/7-link-to-issue-menu.png new file mode 100644 index 00000000..9c8bc648 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/7-link-to-issue-menu.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/8-link-existing-issue.png b/src/content/docs/integrations/issues-management/images/linear/8-link-existing-issue.png new file mode 100644 index 00000000..44ea23f1 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/8-link-existing-issue.png differ diff --git a/src/content/docs/integrations/issues-management/images/linear/9-linear-defects.png b/src/content/docs/integrations/issues-management/images/linear/9-linear-defects.png new file mode 100644 index 00000000..2268b293 Binary files /dev/null and b/src/content/docs/integrations/issues-management/images/linear/9-linear-defects.png differ diff --git a/src/content/docs/integrations/issues-management/linear.md b/src/content/docs/integrations/issues-management/linear.md index 20b13f2a..b7cee444 100644 --- a/src/content/docs/integrations/issues-management/linear.md +++ b/src/content/docs/integrations/issues-management/linear.md @@ -1,41 +1,117 @@ --- -title: Linear Configuration -description: Integrate Linear with Testomat.io to streamline issue tracking directly from your test management system. This setup involves configuring a profile with your Linear Personal Access Token and team name. Once integrated, you can link tests or create defects, automatically generating tickets in Linear with testing data for easy tracking. +title: Linear +description: Connect Linear to Testomat.io to create Linear issues from tests and runs, link existing issues by key or URL, raise defects with Linear fields, and use Linear issues as requirements. type: article url: https://docs.testomat.io/integrations/issues-management/linear head: - - tag: meta - attrs: - name: og:image - content: https://docs.testomat.io/_astro/221125834-31a351a7-48ee-472c-a8b2-1f2bfaaef39d.Cfh-wOie_Z1LVMN4.webp - - tag: meta attrs: name: keywords - content: Linear integration, Testomat.io, issue tracking, Personal Access Token, defect creation, test management, team configuration, testing workflows + content: Linear integration, Testomat.io, issues management, create Linear issue, link Linear issue, raise defect, Linear requirements, Personal Access Token, Linear API key, optional fields --- -If you already have a workspace configured in Linear, you're ready to integrate it with Testomat.io. To get started, you'll need your Team name and Personal Access Token. We'll walk you through each step to locate this information and connect it with Testomat.io. +Connect your Linear team to a Testomat.io project to create issues from failing tests, link the ones you already have, and turn Linear issues into requirements. + +## Create a Personal Access Token + +Testomat.io connects to Linear with a personal API key. Linear calls it an **API key**; in Testomat.io the same key goes into the **Personal Access Token** field. + +![The Personal API keys section in Linear with the New API key button](./images/linear/1-linear-new-api-key.png) + +1. In Linear, open **Settings** and go to **Security & access**. +2. Under **Personal API keys**, click **New API key**. +3. Enter a **Key name**, for example `Testomat.io`. +4. Choose the **Permissions** and **Team access** the key gets. +5. Click **Create**. + +![The Create API key form in Linear with Key name, Permissions, and Team access](./images/linear/2-linear-create-api-key.png) + +6. Click the copy icon next to the key. + +![The new Linear API key with the copy icon](./images/linear/3-linear-copy-api-key.png) + +Copy the key before you leave the page - Linear shows it only once. + +## Connect Linear + +![The Issues management page in Settings with the Connect to IMS button](./images/linear/4-connect-to-ims.png) + +1. In Testomat.io, open **Settings** and go to **Issues management**. +2. Click **Connect to IMS**. +3. Select **Linear**. +4. Change the **Profile Name** if you want a different one. +5. Paste your key into **Personal Access Token**. The **Create it on Linear** link above the field opens the page where you make one. +6. Enter your team name in **Team**. +7. Click **Save**. + +![The Linear connection form with Profile Name, Personal Access Token, and Team](./images/linear/5-linear-profile.png) + +The new profile appears on the **Issues management** page, next to any other systems you use. To copy or delete it later, click the **⋯** button next to the profile. + +![The Linear profile on the Issues management page with the Copy and Delete options](./images/linear/6-linear-profile-menu.png) + +## Create a Linear Issue + +1. Open a test, suite, or run, click the **⋯** button in the top-right corner, and select **Link to Issue**. +2. On the **Create new issue** tab, pick your Linear profile. +3. Enter the title and description. +4. Click **Show Optional Fields** to fill in more Linear fields. +5. Click **Create Issue**. + +![The test menu with Link to Issue](./images/linear/7-link-to-issue-menu.png) + +| Field | What it sets | +| --- | --- | +| **Status** | The workflow state of the issue. | +| **Priority** | How urgent the issue is. | +| **Assignee** | Who works on it. | +| **Labels** | Linear labels. | +| **Project** and **Project milestone** | Where the issue belongs in your Linear projects. | +| **Cycle** | The cycle the issue is planned for. | +| **Estimate** | The estimate, in your team's scale. | +| **Due date** | When it should be done. | +| **Parent issue** | A parent issue, by URL or ID. | + +The lists show only the values of your connected team. If your team doesn't use estimates, the **Estimate** field is turned off. + +## Link an Existing Issue + +1. Open a test, suite, or run, click the **⋯** button in the top-right corner, and select **Link to Issue**. +2. Open the **Link existing issue** tab. +3. Paste the Linear issue URL or its key, such as `QA-1`, into **Issue URL or ID**. +4. Click **Link Issue**. + +![The Link existing issue tab with a Linear key in the Issue URL or ID field](./images/linear/8-link-existing-issue.png) + +## Raise a Defect + +1. In a manual run, open a failed test and click **Raise Defect**. +2. Pick your Linear profile. +3. Click **Show Optional Fields** to set Linear fields. +4. Create the defect. + +To link a defect that already exists, open **Link existing defect** and paste the key. With **Tracker** set to **Detect automatically**, Testomat.io recognizes a Linear key on its own. + +## Track Linear Defects -To connect your Linear space with Testomat.io you need to open Settings (1) -> Issues management (2) and click on 'Connect to IMS' (3) button. +Defects raised in Linear show up on the **Defects** page. Open the **Linear** tab to see only them, with their status, severity, and a link to each issue in Linear. -![Connect to Linear in Settings](./images/att2Linear.png) +To pull the latest changes from Linear right away, click the **⋯** button in the top-right corner and select **Sync Defects**. -When ‘Connect to Issue Management System’ sidebar is opened, follow the instructions below: +![The Defects page with the Linear tab open and the Sync Defects option](./images/linear/9-linear-defects.png) -1. Give a name to your profile -2. Enter your Personal Access Token from Linear ([learn more](https://linear.app/settings/account/security)) -3. Enter your Team name ([more details on Linear Teams](https://linear.app/docs/teams)) -4. Click on Save button +## See Testomat.io Items in Linear -![Linear](./images/att1Linear.png) +Every linked test, suite, run, plan, requirement, or defect appears on the Linear issue as an attachment, not a comment. The issue discussion stays clean, and your team opens the testing context in one click. -:::note +## Use Linear Issues as Requirements -Use the full Team name as shown in Linear (e.g. "Test Team"), not the short identifier/key (e.g. "TES") used in issue IDs. +Add a Linear issue as a requirement to plan tests from it. Testomat.io imports the title and the description. See [Linear as a Requirement Source](https://docs.testomat.io/advanced/ai-powered-features/ai-requirements#linear-as-a-requirement-source). -::: +Linear requirements refresh **once a day**. To pull the latest version right away, open the requirement, click the **⋯** menu, and select **Refresh Requirement**. -Once your Issues Management System is configured you can link a test or create a defect. As a result, Testomat.io will create a ticket in your Linear Team with dedicated links and data, so you can easily look through the testing data you need. Here is an example: +## Next Steps -![CleanShot 2023-02-24 at 11 08 22@2x](./images/221138224-d3d3a194-e9c0-487e-9169-06e0db427ea2.jpg) \ No newline at end of file +- [Issues Management Systems](https://docs.testomat.io/integrations/issues-management) +- [AI-Requirements](https://docs.testomat.io/advanced/ai-powered-features/ai-requirements) +- [Defects](https://docs.testomat.io/project/defects) diff --git a/src/content/docs/integrations/report-notifications/images/webhook-rule.png b/src/content/docs/integrations/report-notifications/images/webhook-rule.png new file mode 100644 index 00000000..ac8065a7 Binary files /dev/null and b/src/content/docs/integrations/report-notifications/images/webhook-rule.png differ diff --git a/src/content/docs/integrations/report-notifications/rules.md b/src/content/docs/integrations/report-notifications/rules.md index b17a281d..88b6288e 100644 --- a/src/content/docs/integrations/report-notifications/rules.md +++ b/src/content/docs/integrations/report-notifications/rules.md @@ -25,6 +25,7 @@ head: - **Jira** notification. - **Azure DevOps** notification. - **Telegram** notification. +- **Webhook** — a JSON request to your own HTTPS endpoint. Testomat.io allows sending notifications for finished runs: diff --git a/src/content/docs/integrations/report-notifications/webhook.md b/src/content/docs/integrations/report-notifications/webhook.md new file mode 100644 index 00000000..81937bcb --- /dev/null +++ b/src/content/docs/integrations/report-notifications/webhook.md @@ -0,0 +1,86 @@ +--- +title: Webhook Notifications +description: Send a JSON request to your own HTTPS endpoint when a test run finishes and matches your notification rules. Set the Webhook URL, add an optional signing secret, and use the run details to start your own automation or AI agents. +type: article +url: https://docs.testomat.io/integrations/report-notifications/webhook +head: + - tag: meta + attrs: + name: keywords + content: Testomat.io, webhook, run-completion webhook, report notifications, notification rules, JSON payload, HMAC signature, X-Testomatio-Signature, automation, CI, AI agents +--- + +Get a JSON request on your own server every time a run finishes and matches your rules. Use it to analyze failures with AI, start a follow-up CI job, update a release gate, or send results to your own dashboard. + +:::note + +You need an endpoint that accepts `POST` requests over HTTPS. + +::: + +## Set Up a Webhook + +1. Open **Settings** and go to **Report notifications**. +2. Click **Add Notification Rule**. +3. Enter a **Title** for the rule. +4. Select **Webhook** in **Notification Type**. +5. Paste your endpoint into **Webhook URL**. It must start with `https://`. +6. Enter a **Signing secret** if you want to check that requests come from Testomat.io (optional). +7. Set the conditions on the **Basic Rules** or **Advanced Rules Engine** tab, for example: send only when the run has failures. +8. Click **Test webhook**. Testomat.io sends a sample run to your endpoint. +9. Turn on **Rule Enabled** at the top of the form. +10. Click **Save**. + +![The New Notification Rule window with Webhook selected, the Webhook URL, Signing secret, and Test webhook button](./images/webhook-rule.png) + +:::note + +Select **Publish a report and use public link in report notification** to add a public link to the report in each request. + +::: + +## What the Request Contains + +Each request is a `POST` with a JSON body and these headers: + +| Header | Value | +| --- | --- | +| `Content-Type` | `application/json` | +| `User-Agent` | `Testomatio-Webhook` | +| `X-Testomatio-Event` | `run.finished` | +| `X-Testomatio-Signature` | `sha256=`. Sent only when a signing secret is set. | + +The body includes the project, the rule that fired, and the run: + +| Field | What it holds | +| --- | --- | +| `id`, `url` | The run ID and a direct link to the report. | +| `status` | The run status. | +| `passed`, `failed`, `skipped`, `tests_count` | Test totals. | +| `env`, `labels`, `plans` | The environment, labels, and plans of the run. | +| `ci_build_url` | A link to the CI build. | +| `rungroup_id`, `rungroup_path` | The run group the run belongs to. | +| `launched_at`, `finished_at` | When the run started and finished. | + +To get test-level details, use the run ID with [Public API v2](https://docs.testomat.io/advanced/api-access/#public-api-v2) or the MCP Server. + +## Check the Signature + +A signing secret lets your server make sure a request really came from Testomat.io. When you set one, Testomat.io signs the raw request body with HMAC-SHA256 and sends the result in the `X-Testomatio-Signature` header. Compute the same signature on your side with your secret and compare the two. If they match, the request came from Testomat.io. + +## Limits + +- Only HTTPS endpoints on public addresses are accepted. Redirects are not followed. +- Your endpoint has 10 seconds to answer. If it fails or returns an error, Testomat.io tries again, up to 5 times. +- Several rules with the same URL and secret send one request per run. +- For a run group rule, the request carries the run whose finish triggered it. + +## If This Doesn't Work + +- **Nothing arrives.** Check that **Rule Enabled** is on. Then click **Test webhook** and make sure your endpoint answers with a `2xx` status within 10 seconds. +- **The signature doesn't match.** Compute it from the raw body, before your framework parses the JSON. + +## Next Steps + +- [Notification Rules](https://docs.testomat.io/integrations/report-notifications/rules) +- [Public API](https://docs.testomat.io/advanced/api-access) diff --git a/src/content/docs/management/company/administration.md b/src/content/docs/management/company/administration.md index b7c04699..d1ea05ec 100644 --- a/src/content/docs/management/company/administration.md +++ b/src/content/docs/management/company/administration.md @@ -36,7 +36,7 @@ Once your Company is created, you can proceed with [Enabling a Subscription](htt ## Company Settings -The **'Company Settings'** section allows owners to manage company-specific configurations, including updating the company name, adjusting sharing options, and utilize AI features. These settings ensure the proper access control and facilitate the sharing of specific data within the company. Below is an overview of the main functionalities: +The **'Company Settings'** section allows owners to manage company-specific configurations, including updating the company name, adjusting sharing options, and utilize AI features. These settings ensure the proper access control and facilitate the sharing of specific data within the company. Owners on the Enterprise plan can also [clone project settings](https://docs.testomat.io/management/company/clone-project-settings) from one project to others. Below is an overview of the main functionalities: ### Update Company Name @@ -327,11 +327,11 @@ Next to each project in the list, you'll find a three-dot (⋮) menu. You can pe - **Edit**: Change the project’s name. - **Change Owner**: Assign a new owner from the list. -- **Clone**: Duplicate the project along with all test data (excluding user access). +- **Clone Project**: Duplicate the project along with all test data (excluding user access). - **Archive/Unarchive**: Archive a project to prevent edits while retaining read-only access. Unarchive when needed. - **Delete**: Permanently delete a project. **Note:** This action is irreversible. -![Testomatio.io - Projects-Management-Menu](./images/manage_project.png) +![The Project board with a project avatar and the project menu open](./images/manage-project-menu.png) ## Project Archive diff --git a/src/content/docs/management/company/clone-project-settings.md b/src/content/docs/management/company/clone-project-settings.md new file mode 100644 index 00000000..961a3291 --- /dev/null +++ b/src/content/docs/management/company/clone-project-settings.md @@ -0,0 +1,53 @@ +--- +title: Clone Project Settings +description: Copy configuration from one project to other projects in your company. Clone integrations, labels and fields, templates, environments, and custom statuses without setting them up again. +type: article +url: https://docs.testomat.io/management/company/clone-project-settings +head: + - tag: meta + attrs: + name: keywords + content: Testomat.io, clone project settings, company settings, Enterprise, project configuration, labels, templates, environments, custom statuses, Jira integration +--- + +Set up a new project in minutes by copying the configuration of one you already have. Your tests and runs stay where they are; only the settings are copied. + +:::note + +Clone Project Settings is available to company owners on the Enterprise plan. + +::: + +To copy a whole project together with its tests, use **Clone Project** on the Project board instead. See [Project Actions](https://docs.testomat.io/management/company/administration#project-actions). + +## Clone the Settings + +1. Go to **Companies**, open your company, and select **Company Settings**. +2. Select **Clone Project Settings** in the menu on the left. +3. Under **1. Source project**, select the project to copy settings from. +4. Select what to copy. You can pick single items or a whole category. +5. Select one or more target projects. +6. Click **Clone settings**, then confirm with **Clone**. + +![The Clone Project Settings page with the Source project field, the Clone settings button, and Clone history](./images/clone-project-settings.png) + +Settings that already exist in a target project are updated, so you can run a clone again whenever the source project changes. + +Testomat.io shows the result for every item, and the last 20 clones in your company stay in **Clone history**. + +## What You Can Clone + +| Category | What it includes | +| --- | --- | +| **Jira integration** | The Jira connection of the project. | +| **Issue Management** | Issue management profiles. | +| **Artifacts** | Artifact storage settings. | +| **Labels & Fields** | Labels and custom fields. | +| **Templates** | Test and suite templates. | +| **Environments** | Run environments. | +| **Custom Statuses** | Custom test statuses. | + +## Next Steps + +- [Company Administration](https://docs.testomat.io/management/company/administration) +- [Plan Features Comparison](https://docs.testomat.io/management/company/plan-features-comparison) diff --git a/src/content/docs/management/company/images/clone-project-settings.png b/src/content/docs/management/company/images/clone-project-settings.png new file mode 100644 index 00000000..0796df7f Binary files /dev/null and b/src/content/docs/management/company/images/clone-project-settings.png differ diff --git a/src/content/docs/management/company/images/manage-project-menu.png b/src/content/docs/management/company/images/manage-project-menu.png new file mode 100644 index 00000000..44fc078a Binary files /dev/null and b/src/content/docs/management/company/images/manage-project-menu.png differ diff --git a/src/content/docs/management/company/plan-features-comparison.md b/src/content/docs/management/company/plan-features-comparison.md index bd77f02c..4a87ff39 100644 --- a/src/content/docs/management/company/plan-features-comparison.md +++ b/src/content/docs/management/company/plan-features-comparison.md @@ -119,7 +119,6 @@ Use the feature table below to explore specific capabilities in each area like t | Suggest Test Cases | ✖️ | ✔️ | ✔️ | | Suggest Test Case Description | ✖️ | ✔️ | ✔️ | | Generate Test Case Description from Code | ✖️ | ✔️ | ✔️ | -| Generate Code Based on Test Casse Description | ✖️ | ✔️ | ✔️ | | Generate Bug Description Based on Test Case | ✖️ | ✔️ | ✔️ | | Analyze Failed Automated Test Cases | ✖️ | ✔️ | ✔️ | | Explain Autotest Failures Based on Logs | ✖️ | ✔️ | ✔️ | diff --git a/src/content/docs/project/import-export/import/import-tests-from-csv-xlsx.md b/src/content/docs/project/import-export/import/import-tests-from-csv-xlsx.md index 948bddff..2ea2d55f 100644 --- a/src/content/docs/project/import-export/import/import-tests-from-csv-xlsx.md +++ b/src/content/docs/project/import-export/import/import-tests-from-csv-xlsx.md @@ -102,6 +102,11 @@ You can also create your own XLS file to import tests into Testomat.io: | Issues | place here Jira key in format ABC-123 or other IMS keys, can pass multiple Jira keys separated by a comma, can be blank| | You can download the custom Testomat.io example file [here](https://testomatiofiles.ams3.cdn.digitaloceanspaces.com/Testomat_example.xlsx). +:::note + +You can also run this import from a script through Public API v2. The API accepts files from qTest, TestRail, Testmo, Qase, Zephyr, and Testomat.io, and it doesn't work inside a branch. See the [API Reference](https://app.testomat.io/docs/public-api#tag/suites). + +::: ## Next steps diff --git a/src/content/docs/project/runs/images/Advanced_Relaunch_2.png b/src/content/docs/project/runs/images/Advanced_Relaunch_2.png deleted file mode 100644 index 7d0efe26..00000000 Binary files a/src/content/docs/project/runs/images/Advanced_Relaunch_2.png and /dev/null differ diff --git a/src/content/docs/project/runs/images/advanced-relaunch-keep-assignees.png b/src/content/docs/project/runs/images/advanced-relaunch-keep-assignees.png new file mode 100644 index 00000000..1eee887e Binary files /dev/null and b/src/content/docs/project/runs/images/advanced-relaunch-keep-assignees.png differ diff --git a/src/content/docs/project/runs/images/attachments-sort.png b/src/content/docs/project/runs/images/attachments-sort.png new file mode 100644 index 00000000..19fdf058 Binary files /dev/null and b/src/content/docs/project/runs/images/attachments-sort.png differ diff --git a/src/content/docs/project/runs/managing-runs.md b/src/content/docs/project/runs/managing-runs.md index c25eac5a..b6fa0ee0 100644 --- a/src/content/docs/project/runs/managing-runs.md +++ b/src/content/docs/project/runs/managing-runs.md @@ -214,10 +214,11 @@ In the opened sidebar window, configure your relaunch (optional): 1. Enter a custom run title. 2. Enable **'Create new run'** option (if needed). 3. Enable **'Keep values'** option (available only if **'Create new run'** is enabled; this shows previous statuses for test cases). -4. Select the tests that you want to include in your relaunched run one by one (use filtering, sorting, or search options). -5. Click the **'Relaunch'** button. +4. Keep **'Keep assignees'** on to carry over who each test is assigned to (manual and mixed runs; available only if **'Create new run'** is enabled). +5. Select the tests that you want to include in your relaunched run one by one (use filtering, sorting, or search options). +6. Click the **'Relaunch'** button. -![Testomat.io - relaunched Run](./images/Advanced_Relaunch_2.png) +![The Advanced Relaunch window with Create new run, Keep values, and Keep assignees selected](./images/advanced-relaunch-keep-assignees.png) ### Run Type @@ -275,6 +276,15 @@ The **'Keep values'** option is only available when **'Create new run'** is enab | **Selected tests** | Results are preserved in the new run (Passed, Failed, Skipped). | Results are reset to Pending status. | | **Unselected tests** | Results are preserved in the new run. | Results are reset to Pending status. | +#### Keep Assignees + +The **Keep assignees** option is on by default. It works when **Create new run** is enabled and the run is manual or mixed. Automated runs have no assignees, and a relaunch in place always keeps them. You become the assignee of the new run. + +| | **Keep assignees ON** | **Keep assignees OFF** | +| ------------------- | ---------------------------------------------------------------- | ------------------------------------------ | +| **Selected tests** | Each test keeps the user it was assigned to. | Tests start with no assignee. | +| **Run assistants** | Users who keep their tests in the new run join it as assistants. | No one is added from the original run. | + #### Select All Tests There are two ways to select all tests for relaunch — the top-level **Checkbox** and the **Select All** option from the dropdown. diff --git a/src/content/docs/project/runs/running-tests-manually.md b/src/content/docs/project/runs/running-tests-manually.md index a64e1220..318acf72 100644 --- a/src/content/docs/project/runs/running-tests-manually.md +++ b/src/content/docs/project/runs/running-tests-manually.md @@ -234,7 +234,16 @@ If you need to configure different custom statuses, click here: +``` + +If one of the shards never reports, the run stays open until the shared run timeout closes it. + #### `TESTOMATIO_STACK_FILTER` Stack trace filter configuration. diff --git a/src/content/docs/tutorials/images/mcp-connection/mcp-agents-tab.png b/src/content/docs/tutorials/images/mcp-connection/mcp-agents-tab.png new file mode 100644 index 00000000..7d9bab1c Binary files /dev/null and b/src/content/docs/tutorials/images/mcp-connection/mcp-agents-tab.png differ diff --git a/src/content/docs/tutorials/mcp-connection.md b/src/content/docs/tutorials/mcp-connection.md index 1ba36968..ed18bcc2 100644 --- a/src/content/docs/tutorials/mcp-connection.md +++ b/src/content/docs/tutorials/mcp-connection.md @@ -39,6 +39,14 @@ Your assistant needs two values from your project. Use a project token, not a general one. A general token opens every project you have access to. See [API Access](https://docs.testomat.io/advanced/api-access/). +:::tip + +Skip the copying. On the **Tests** page, click the **⋯** button in the top-right corner, select **MCP Server**, and open the **Agents** tab. It shows the CLI command and the JSON config with your project ID and token already filled in, ready for Claude Code, Cursor, or Zed. + +::: + +![The Agents tab of the Connect Testomat.io MCP Server window with the CLI command and the JSON config](./images/mcp-connection/mcp-agents-tab.png) + ## Add the Config to Your Assistant Follow the section for the assistant you use, and skip the other two. diff --git a/src/content/docs/tutorials/playwright.md b/src/content/docs/tutorials/playwright.md index ac8e87d4..e7d3f45e 100644 --- a/src/content/docs/tutorials/playwright.md +++ b/src/content/docs/tutorials/playwright.md @@ -225,6 +225,15 @@ Use a commit hash in the title so each set of parallel jobs maps to one identifi ::: +If you know how many shards you run, set `TESTOMATIO_SHARDS`. The run closes on its own when the last shard finishes: + +```shell +TESTOMATIO_SHARDS=2 playwright test --shard=1/2 +TESTOMATIO_SHARDS=2 playwright test --shard=2/2 +``` + +Both jobs report into one run, and nobody has to finish it manually. + ## Extend the shared run timeout A shared run closes after 20 minutes by default. If your suite runs longer than that, extend it with `TESTOMATIO_SHARED_RUN_TIMEOUT`, set in minutes: