Skip to content

Test Plan Platform Comparison

opencode edited this page Oct 25, 2026 · 1 revision

Test Plan Platform Comparison (Modernized) — Issue #1963

Screen: gui/templates/results/platformComparison.html BFF: api/platformcomparison/index.php ASIDE: Reports → Test Plan Platform Comparison (new entry, $TLS_link_report_platform_comparison, present in all 19 server locales) Action: $actions->platformComparison in lib/functions/common.php

Purpose

TestLink 1.9.20 repeats the current status of a plan once per platform and never diffs the platforms. The buildComparison report diffs two builds of one plan. Neither answers the regression question: for the same test cases, what changed between platform A and platform B?

This screen is a net-new 2.0.1 report. It compares the same test plan across two of its platforms, classifies every test-case version (fixed / regressed / new pass / new fail / no longer run / changed / unchanged) and shows per-platform KPIs plus a CSV export. It is read only.

What it shows

Block Content
Banner regressions, improvements, stable, or no-execution verdict
Report context test project, test plan, platform A, platform B
Platform summary (×2) assigned, executed, passed, failed, blocked, not run, pass rate, coverage
Change summary fixed, regressed, new pass, new fail, no longer run, changed
Per test case changes test case, version, suite, status A, status B, change
CSV export platform summary + filtered diff rows, UTF-8 BOM, ; separator

Semantics

  • The unit is the test-case version linked to the plan (testplan_tcversions), so a version assigned to only one platform still appears (not run on the other).
  • Latest execution wins (MAX(executions.id) per version and platform) — the same rule every other 2.0.1 report uses.
  • assigned per platform counts the plan versions whose assignment targets that platform (platform_id = P) or has no platform (legacy platform_id = 0).
  • pass_rate = passed / executed; coverage = executed / assigned; not_run = assigned - executed.
  • Classification: regressed (passed -> failed), fixed (failed/blocked -> passed), new_pass (not run -> passed), new_fail (not run -> failed), revived (executed in A, no execution in B), changed (other transitions), or same_passed / same_failed / same_blocked / same_not_run.

Filters

  • tproject_id, tplan_id — scope; the plan must belong to the asserted project.
  • platform_a, platform_b — two different platforms of the owning project, both linked to the plan (testplan_platforms.active = 1).

BFF contract

  • GET|HEAD ?action=projects — projects the user may read.
  • GET|HEAD ?action=init&tproject_id=N[&tplan_id=P] — plans and the platforms linked to the selected plan (all open project platforms without a plan).
  • GET|HEAD ?action=report&tplan_id=N[&tproject_id=P]&platform_a=A&platform_b=B.
  • Rights: session auth + bffSameOriginGuard + bffEnforceSession, and testplan_metrics on the owning project of the plan. The client tproject_id is only an assertion.
  • Errors: 400 invalid_request|invalid_parameter|unknown_action, 401 not_authenticated|session_expired, 403 no_right, 404 tplan_not_found|tproject_not_found|project_mismatch, 405 method_not_allowed.

i18n

Labels come from pcomp.* and footers.platformComparison in all 10 client bundles; the server menu entry uses link_report_platform_comparison in all 19 server locales. ai/verify_i18n_coverage.sh passes 9/9 bundles.

Testing

Suite Issue #1963 (10 cases) in tmp/TLU_Test_Cases.md: normal render, platform auto-selection/swap, change classification, change filter, Apply/Refresh/plan change, CSV export, plan without platforms, BFF security/error codes, EN+RO i18n, reports-menu wiring. Event Viewer: 0 new Error/Warning rows.

Screenshots

Platform Comparison - normal Platform Comparison - Romanian locale Platform Comparison - plan without platforms

Clone this wiki locally