July 31, 2026
TestInspector stores a complete execution record for every test run — per-step pass/fail status, the selectors resolved for each interaction, the assertion values checked, and full visual regression diffs against approved baselines. This history is accessible through a structured run log interface that lets QA teams investigate individual run failures, compare runs across time to identify patterns, and build a verifiable baseline of test reliability that accumulates value as the suite matures.
Coverage tracking is a persistent challenge for QA teams because the question "which behaviors have we tested" is harder to answer than it appears. A list of test cases gives nominal coverage, but it does not tell you whether those tests executed successfully across recent builds, whether specific test areas are failing intermittently, or whether the suite has regressed in reliability as the application changed. Run history answers these questions with evidence rather than with estimates.
This guide covers how TestInspector's run log structure works, how to use it for root cause analysis and reliability tracking, and how QA teams can use the data to report meaningful coverage metrics to engineering and product stakeholders. Teams evaluating test automation services or considering adopting a new automation platform will find the run visibility question as important as the authoring and execution questions.
A test result that records only pass or fail is useful for immediate triage but limited for longer-term coverage tracking. A run with ten passing tests and two failing tests tells you that something is wrong. It does not tell you whether the failures are in the same area as last sprint's failures, whether the passing tests are executing the same assertions they executed last week, or whether the application behavior under test has changed.
TestInspector run logs record test execution at the step level. Each step captures the action type, the selector or URL used, the input values provided, the assertion expected and actual values, the step result, and — for steps with visual regression — a reference to the screenshot and the SSIM comparison score. This granularity makes the run log a factual record of what the test did, not just whether it passed.
The practical difference shows when a previously passing test starts failing. A pass/fail history shows that the failure began in a specific sprint. A per-step history shows which step failed, what selector stopped resolving, what assertion mismatch appeared, and whether similar step failures occurred in other tests in the same run. This information is available without reproduction because it was recorded during the original run.
| Data Point | Pass/Fail History | TestInspector Per-Step History |
|---|---|---|
| Failure location | Test-level only | Specific failing step |
| Selector used | Not recorded | Full selector string recorded |
| Assertion detail | Pass or fail | Expected value, actual value, comparison type |
| Visual state | Not recorded | Screenshot + SSIM score per baseline comparison |
| Timing | Run start and end | Per-step execution time |
| Cross-run comparison | Count-based only | Step-level diff across run history |
Recurring test failures — tests that fail intermittently across multiple runs without clear correlation to application changes — are one of the highest-cost maintenance problems in automated test suites. Each occurrence requires diagnosis time. If the diagnosis cannot be performed using recorded data, it requires reproduction, which adds further time and is often unreliable for timing-sensitive failures.
TestInspector run logs enable root cause analysis without reproduction by providing the per-step execution record for each failure. For a test that has failed three times in the past two weeks, the log for each failing run can be examined to identify whether the same step failed each time, whether the failure produced the same error, and whether the selector resolution differed between runs. This comparison usually distinguishes between application regressions (same step fails, different assertion value), selector fragility (same step fails, selector stops resolving), and timing issues (different steps fail across runs, no consistent pattern).
The live WebSocket streaming view provides additional diagnostic value during active investigation. When a QA engineer is actively debugging a recurring failure, running the test with live streaming shows each step executing in real time — including the selector the test resolves, the element it interacts with, and the assertion it checks. This real-time view makes it possible to observe transient state problems that do not appear in static logs. For teams that rely on managed software testing services and need clear evidence trails for handoff, per-step run logs provide the documentation layer that makes failure investigations transferable.
Coverage is not a static property of a test suite — it is a property of how the suite runs over time. A test that was authored last month but has not executed in two sprints provides no current coverage, regardless of what it tests. For coverage tracking to be meaningful, the suite needs to run on a schedule that aligns with the change cadence of the application being tested.
TestInspector supports test scheduling via cron expressions, fixed intervals, and one-time triggers. Scheduling tests to run on a cadence — daily smoke tests, sprint-level regression runs, pre-release full suite execution — creates a run history that reflects actual coverage over time rather than the nominal coverage implied by the test suite size. A suite with 200 tests that runs twice per sprint has more meaningful coverage data than a suite with 300 tests that runs only on demand.
The combination of scheduling and per-step history makes it possible to identify coverage gaps that would not appear from inspecting the test list alone. Tests that fail consistently in scheduled runs despite passing during development indicate unstable test infrastructure. Tests that have not executed in multiple scheduled runs indicate scheduling configuration issues or suite management drift. This data is available from run history without requiring a separate coverage instrumentation layer. For teams evaluating test automation infrastructure, the interplay between scheduling, run history, and coverage visibility is a key differentiator between platforms.
Visual regression testing generates a specific kind of historical record: an approved baseline screenshot for each visual assertion in the test suite, along with a comparison result for every subsequent run. This record captures the expected visual state of the application at baseline approval and tracks deviations from that state across all subsequent runs.
TestInspector implements visual regression using SSIM (Structural Similarity Index) comparison. Each visual regression step captures the current page state and compares it to the stored baseline. The SSIM score, the current screenshot, and the diff visualization are stored in the run log, creating a visual history of the page state across runs. When the baseline is updated after an intentional UI change, the update is also recorded, providing a timeline of expected visual states alongside the comparison history.
For QA teams managing test coverage across a product with frequent UI changes, this visual history serves two functions. First, it provides a coverage record for UI behavior that assertion-based tests cannot fully specify — the visual history shows that the UI was in a known-good state at baseline approval and tracks how it has changed since. Second, the diff visualization for failing runs shows exactly what changed, which speeds up the determination of whether a visual difference represents a regression or an intentional change that requires a baseline update. Teams using manual testing for final UI sign-off can use visual regression history to reduce the scope of manual review to areas where visual differences were detected.
Reporting test coverage to engineering leads and product managers is a recurring challenge because the metrics that are easy to collect — test count, pass rate — do not tell the audience what they actually need to know. A 95% pass rate across 200 tests is meaningless without knowing what those tests cover, how recently they ran, and whether the 5% failures represent critical functionality or low-priority edge cases.
TestInspector run history provides the raw data for more informative coverage reporting. The per-step log shows which application areas were exercised in each run. The run history across scheduled executions shows pass rates over time rather than at a single point. Visual regression history shows which UI areas have been validated visually and when baselines were last approved. The combination gives QA teams material for reports that answer the question stakeholders actually care about: "Is this build safe to release?" rather than "How many tests passed?"
For teams that need to justify the quality of a release to engineering managers or product stakeholders, the ability to reference specific run logs — showing that the checkout flow exercised successfully across ten runs over the past two sprints, that no visual regressions were detected in the core UI areas, and that the three failures in the run were diagnosed and resolved — is substantially more credible than a raw pass/fail count. For teams considering hiring QA capacity, this kind of coverage evidence also provides a baseline for evaluating what the incoming team is taking ownership of. The manual vs. automated testing guide covers the complementary role of run history in automated suites alongside manual testing for comprehensive coverage.
TestInspector retains run logs and step-level execution records for completed test runs. The retention period provides enough history to support multi-sprint trend analysis and root cause investigation for recurring failures. QA teams can access run history through the run log interface and compare runs across time without exporting or managing external log storage.
Run history records the URLs visited, selectors resolved, and assertions evaluated in each step. For teams that organize tests by feature area or application section, the run logs for those tests provide a per-area coverage record. Visual regression baselines add a second layer by recording the expected visual state of specific pages. Coverage by feature area is best derived by organizing tests consistently and reviewing run history within those groupings rather than from an automated coverage map.
When TestInspector's self-healing mechanism resolves a step using an alternative selector, the run log records the original selector, the self-healing attempt, and the alternative selector used to resolve the step. This makes the self-healing event visible in history rather than silent, which is important for detecting when selector drift has become widespread enough to warrant updating the test step rather than relying on auto-retry. Teams can identify self-healing events in run history and decide whether to update the test step or leave the auto-resolution in place.
Run history is most valuable for tests that run on a regular schedule because the comparison across runs over time requires multiple data points. For tests that run only before major releases, the history provides comparison across release cycles rather than across sprints, which is less granular but still useful for identifying tests that have become unreliable, areas where visual baselines are aging between approvals, and assertion patterns that have not fired against recent application states.
Tests triggered via the TestInspector CI/CD API generate the same per-step run logs as tests run manually or through the scheduler. CI-triggered runs appear in the run history alongside scheduled and manual runs, making it possible to compare CI run results against scheduled run results for the same test suite. For teams that run smoke tests on every CI build alongside a less frequent full regression suite, the run history provides a combined view of both test cadences without requiring separate log management.
Per-step run logs that record assertion results, visual regression comparisons, and execution timestamps provide the level of detail that compliance-oriented audit requirements typically expect from a test evidence trail. For regulated industries where test execution evidence is required, TestInspector run history can be referenced in audit documentation as evidence that specific test scenarios were executed and passed against defined criteria. Teams with specific compliance requirements should evaluate whether the exported run data format meets their documentation standards. See the complete guide to software testing for context on how test evidence and coverage documentation fit into quality management frameworks. For more on TestInspector's full feature set, including scheduling, self-healing, and MCP integrations, visit TestInspector.

Sign up to receive and connect to our newsletter