This package provides a Dart interface for seamless integration with the TestRail API, enabling automated test reporting, including test run management and case pass/fail reporting.
Initialize the TestRail instance using the configure method:
FlutterTestRail.initialize(
username: 'your user name',
password: 'your password',
/// The url that points to the test rail server => https://example.testrail.com
serverDomain: 'https://example.testrail.com',
);
Adds a new test result, comment or assigns a test. It’s recommended to use 'Add Result' instead if you plan to add results for multiple tests.
final testResult = await TestResult.addTestResult(9,statusId:1); //replace 9 with your own testId.
Adds one or more new test results, comments, or assigns one or more tests. Ideal for test automation to bulk-add multiple test results in one step.
List<TestStatus> testStatusResult =[TestStatus(caseId:121,statusId:1,comment:'first test passed'), TestStatus(caseId:122,statusId:5,comment:'second test failed')]
final testResult = await TestResult.addRunResults(3,addTestResults:testStatusResult); //replace 3 with your own RunId.
Adds one or more new test results, comments or assigns one or more tests (using the case IDs). Ideal for test automation to bulk-add multiple test results in one step.
/// create your intial Test Stauts list.
List<TestStatus> testStatusResults = [
TestStatus(
caseId: 1758,
statusId: 3,
comment: 'Verify that user is able to see the splash screen',
),
TestStatus(
caseId: 1759,
statusId: 3,
comment:
'Verify that after splash screen app user is able to see “Permission screen”',
),
];
/// Update your list once your test is completed and add status on test rail with updated status.
await TestRailUtil.reportMultipleTestCaseResults(testStatusResults);
class TestRailUtil {
static void configureTestRail() {
HttpOverrides.global = MyHttpOverrides();
TestRail.configure(
username: 'your user name',
password: 'your password',
serverDomain: 'https://example.testrail.com',
);
}
/// Add Result Report to Testrail [reportSingleTestCaseResult],
///
/// And Equivalent Status Code:
/// 1: Passed
/// 2: Blocked
/// 3: Untested (not allowed when adding a new result)
/// 4: Retest
/// 5: Failed
///
/// So Pass Status Code according to your test status
static Future<void> reportMultipleTestCaseResults(
List<TestStatus> testStatusResults,
) async {
final testRun = await TestRun.get(3); //replace 3 with your own Run Id.
await testRun.addResultsForCases(
testStatusResults,
);
}
}
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
/// Create new test case in section
final createdTestCase = await TestCase.create(
// Replace with your own sectionId
1,
title: 'Test case from API',
customValues: <String, dynamic>{
// Custom fields start with "custom_" prefix
'custom_feedback': 'This is custom feedback',
},
);
/// Get TestCase by ID
final testCase = await TestCase.get(1);
await testCase.delete();
/// Start by creating a new run
final newRun = await TestRun.create(
name: 'Test execution',
projectId: 1,
);
/// Add cases to the run
await newRun.updateRun(
caseIds: [1, 2, 3, 5],
);
Once the run is created, results can be reported by case:
final result = await newRun.addResultForCase(
caseId: 1,
statusId: 1,
);
// Optionally add a screenshot or other image to the result
await result.addAttachment(
'/workspace/attachments/failure.png',
);
Historical runs, cases, and sections can be retrieved:
final testCase = await TestCase.get(1);
final testCases = await TestCase.getAll(1);
final testRun = await TestRun.get(1);
final testSection = await TestSection.get(1);
final testCaseHistory = await TestCaseHistory.get(1);
Completed or ongoing test run results can be retrieved:
final caseResults = await TestResult.getCaseResults(
// Case ID is from TestCases, not TestRun
184234,
runId: 1833,
);
final runResults = await TestResult.getRunResults(
1818,
statusId: [5, 1],
);
final testResults = await TestResult.getTestResults(
// Test ID from particular TestRun
1868150,
);