TestRail Bug Report Generator
This skill generates comprehensive, Jira-ready bug reports from failed test cases in TestRail for FOLIO application testing. It extracts test case details, determines environment configuration, and formats a structured bug report ready for copy-paste into Jira.
When to Use
- Test execution failed and needs bug reporting to Jira
- Need to document and report application defects
- Want consistent, well-structured bug reports
- Need to investigate failure before reporting
- User provides test case ID like "C389500" and mentions bug report
Prerequisites
- TestRail MCP server configured and operational
- Test case ID from TestRail (e.g., C389500)
- Access to
cypress.config.jsfor environment details - (Optional) Chrome DevTools MCP server for live investigation when failure details are insufficient
Procedure
Step 1: Retrieve Test Case Details
Fetch the complete test case information from TestRail:
mcp_testrail_getCase({ caseId: 389500 }) // Use numeric ID without 'C' prefix
Extract and Note:
- Title:
titlefield - will be used for bug report title - Preconditions:
custom_precondsfield - context needed before test execution - Test Steps:
custom_steps_separatedfield - array of step objects withcontentandexpected - Automation Status:
custom_automation_status- confirm test is automated - Test Section:
section_id- helps identify feature area - Attachments: Check if test references attached files (MARC records, screenshots, etc.)
Decision Point:
- ✅ Test case retrieved successfully: Continue to Step 2
- ❌ Test case not found: Verify test case ID format and existence
- ⚠️ Test case not automated: Clarify if manual test needs bug report
Step 2: Determine Environment
Extract the environment URL from Cypress configuration:
// Read cypress.config.js and find baseUrl
// Default: 'https://folio-etesting-cypress-diku.ci.folio.org'
Search in:
cypress.config.js- look forbaseUrlproperty- Check if user specified a different environment in the request
- Check for environment-specific config files (e.g.,
cypress.config.BF.R.Eureka.js)
Environment Format:
- Include full URL with tenant if applicable
- Example:
https://folio-etesting-cypress-diku.ci.folio.org (diku tenant)
Decision Point:
- ✅ BaseUrl found: Use that environment
- ⚠️ User specified different environment: Use user-provided value
- ⚠️ Multiple configs exist: Ask user which environment was used
Step 3: Analyze Failure Context
Understand the failure by reviewing available information:
From User Input:
- Failure description or error messages
- Screenshots or logs mentioned
- Specific behavior observed
From Test Case:
- Which step failed (if known)
- Expected vs actual behavior from test steps
- Any special preconditions or setup
Decision Point:
- ✅ User provided detailed failure info: Use directly in bug report, skip to Step 5
- 🔍 Insufficient or unclear failure details: Proceed to Step 4 for Chrome DevTools investigation
- ⏭️ Sufficient context gathered: Skip to Step 5
Step 4: (Optional) Live Investigation with Chrome DevTools
Use this step ONLY when failure details are insufficient or unclear.
If user provided vague or missing failure information, investigate using Chrome DevTools MCP:
Prerequisites:
- Chrome DevTools MCP server configured
- Test credentials available in TestRail test case preconditions or notes
- Understanding of test flow from Step 1
Investigation Process:
- Open new browser page:
mcp_chrome-devtoo_new_page()
- Navigate to environment:
mcp_chrome-devtoo_navigate_page({ url: "<baseUrl from Step 2>" })
Login:
- Get credentials from test case
custom_precondsfield or TestRail project settings - Typical FOLIO credentials: Look for "Login as user with permissions..." in test steps
- Use TestRail MCP to retrieve test case details if credentials not visible
- Use
mcp_chrome-devtoo_fillandmcp_chrome-devtoo_clickfor login flow
- Get credentials from test case
Follow test steps:
- Execute each step from
custom_steps_separated - Use
mcp_chrome-devtoo_take_snapshotto capture page state - Use
mcp_chrome-devtoo_click,mcp_chrome-devtoo_fill,mcp_chrome-devtoo_type_textfor interactions - Use
mcp_chrome-devtoo_wait_forif elements load asynchronously
- Execute each step from
Capture failure:
- Take screenshot at failure point:
mcp_chrome-devtoo_take_screenshot - Check console errors:
mcp_chrome-devtoo_list_console_messages - Check network issues:
mcp_chrome-devtoo_list_network_requests - Evaluate JavaScript state:
mcp_chrome-devtoo_evaluate_script
- Take screenshot at failure point:
Document observations:
- Exact error messages displayed
- UI elements that didn't behave correctly
- Network errors or API failures
- Console warnings/errors
Decision Point:
- ✅ Failure reproduced: Document exact behavior for Actual Result
- ⚠️ Cannot reproduce: Note as "intermittent issue" in bug report
- ❌ Investigation blocked: Document blockers and use available information
Step 5: Construct Bug Report
Create Jira-ready bug report with required sections:
Title Format:
[Module/Feature] Brief description of defect
Rules:
- Include feature area/module from user input or context (e.g.,
[MARC Bibliographic],[Inventory],[Circulation]) - If user doesn't specify module, ask them to identify it based on test case context
- Use clear, concise description (max 100 characters)
- Focus on what's broken, not test case name
Examples:
[MARC Bibliographic] Unable to save new field when scope is local[Inventory] Holdings record not displaying after creation[Circulation] Check-in fails for items with pending requests
Description:
Brief context about the defect:
Brief summary of what's broken and impact on functionality.
Related test case: C<TestCaseId>
Environment:
URL: <baseUrl from Step 2>
Browser: Chrome (browser version not critical)
Date Tested: <current date>
Test Case: C<TestCaseId>
Steps to Reproduce:
Extract from test case custom_steps_separated, formatted as numbered list:
Preconditions:
- <Each line from custom_preconds>
Steps:
1. <First step from custom_steps_separated[0].content>
2. <Second step from custom_steps_separated[1].content>
3. <Continue for all steps>
Formatting Rules:
- Remove HTML tags from TestRail content
- Convert markdown formatting if needed
- Number steps sequentially
- Include preconditions before steps
- Stop at the failing step if known
Expected Result:
Extract from the failing step's expected field or final step:
<Expected behavior from custom_steps_separated[failingStepIndex].expected>
If multiple steps, combine relevant expected results.
Actual Result:
Document observed behavior:
<Description of actual behavior>
<Error messages if any>
<Evidence reference (screenshots/logs) if provided by user>
Sources:
- User-provided failure description (primary source)
- Chrome DevTools investigation findings (if Step 4 was executed)
- Error messages from console/network
- Reference to Cypress screenshots or logs if user mentions their location
Step 6: Format for Jira
Present the complete bug report as formatted text ready for copy-paste:
---
**Copy to Jira:**
**Title:**
[Module] Brief description
**Description:**
Brief summary of defect.
Related test case: C389500
**Environment:**
URL: https://folio-etesting-cypress-diku.ci.folio.org
Browser: Chrome
Date Tested: March 30, 2026
Test Case: C389500
**Steps to Reproduce:**
Preconditions:
- User has permission X
- Data Y exists
Steps:
1. Navigate to module Z
2. Click on button A
3. Enter value B in field C
4. Submit the form
**Expected Result:**
The system should save the record and display success message.
**Actual Result:**
The system displays error "Invalid field configuration" and does not save the record.
Console shows error: "Cannot read property 'id' of undefined"
---
Additional Notes Section (Optional):
- Link to test execution results
- Link to TestRail test case
- Attachments or screenshots reference
- Any workarounds discovered
Step 7: Validation & Delivery
Review the bug report for completeness:
Checklist:
- ✅ Title is clear and includes module/feature
- ✅ Environment includes URL and browser
- ✅ Steps are reproducible by someone else
- ✅ Expected result is clear and specific
- ✅ Actual result includes error messages and evidence
- ✅ Test case ID is referenced
- ✅ No sensitive credentials included
- ✅ Formatting is clean (no HTML artifacts)
Presentation:
- Display the formatted bug report
- Offer to adjust any section if user requests
- Provide the text in a code block for easy copy-paste
- Ask if user needs additional investigation or details
Error Handling
Scenario: Test Case Not Found in TestRail
Response:
Unable to retrieve test case C<TestId> from TestRail. Please verify:
- Test case ID is correct (numeric ID without 'C' prefix: <numericId>)
- TestRail MCP server is connected
- You have access to this test case
Would you like to provide failure details manually for bug report creation?
Scenario: No Failure Details Provided
Response:
I found test case C<TestId>: "<TestTitle>"
To create a comprehensive bug report, I need information about the failure:
- What step failed or what unexpected behavior occurred?
- Any error messages displayed?
- Do you want me to investigate the application live using Chrome DevTools?
Scenario: Chrome DevTools Investigation Blocked
Response:
Unable to complete live investigation due to:
<reason: no credentials, page not loading, etc.>
I'll create bug report based on test case information. You can:
1. Provide failure details directly
2. Add screenshots/logs after creating the Jira ticket
3. Manually reproduce to gather additional evidence
Scenario: Environment Config Not Found
Response:
Warning: Could not determine environment from cypress.config.js
Using default: https://folio-etesting-cypress-diku.ci.folio.org
Is this correct, or should I use a different environment URL?
Best Practices
Title Consistency
- Use module names that match FOLIO's project structure
- Keep titles under 100 characters
- Avoid test case numbers in title (include in Description instead)
Steps Clarity
- Write steps as if for someone unfamiliar with the test
- Include navigation details ("from Settings > Inventory")
- Specify exact field names and button labels
- Note any timing considerations ("wait for record to load")
Evidence Collection
- Reference screenshots/logs if available
- Include exact error message text
- Note console errors when relevant
- Capture network failure status codes
Sensitive Information
- Never include passwords or API keys
- Generalize credentials: "Login with valid user credentials"
- Redact tenant-specific data if needed
- Use test data identifiers: "user created in preconditions"
Integration with Other Skills
- testrail-marc-attachments: If test case references MARC file attachments, use this skill to understand test prerequisites. Mention attached files in bug report preconditions if relevant to the failure.
- test-review-agent: If uncertain whether failure is application bug or test issue, suggest reviewing the test implementation first
Example Workflow
User Request: "Create bug report for C389500, test failed at step 3"
Execution:
- Retrieve C389500 from TestRail → "Create local MARC Bibliographic field"
- Extract baseUrl from cypress.config.js →
https://folio-etesting-cypress-diku.ci.folio.org - Build Steps to Reproduce from test case steps 1-3
- Expected Result from step 3's expected field
- Actual Result from user: "test failed at step 3" + ask for details
- Format complete bug report
- Present for copy-paste to Jira
Output:
**Copy to Jira:**
**Title:**
[MARC Bibliographic] Unable to save local field with scope "local"
**Description:**
System fails to persist MARC field configuration when scope is set to "local".
Related test case: C389500
...
Skill Outputs
This skill produces:
- Formatted bug report text - Ready for Jira copy-paste
- Investigation findings - If Chrome DevTools was used
- Validation report - Checklist confirmation
- Recommendations - Suggestions for additional evidence or investigation
Trigger Prompts Examples
- "Create bug report for C389500"
- "Generate Jira bug from test case C412345, it failed at login step"
- "I need to report bug for failed test C399999, can you investigate it?"
- "Bug report for C389500 - error saving field"
- "Test C412000 failed, help me write bug report for Jira"