Skip to content

Runbook: move Xray test cases into TestWarden with CSV

Migrate Xray manual test cases to TestWarden with CSV: accepted layouts, format checks, mapping, preview, import and reconciliation, plus what Xray data stays behind.

Author
Alt Datum
Published
Updated
Reading time
5 min
Topic
Migration

To migrate Xray test cases into TestWarden, get your manual tests into a CSV the Xray Test Case Importer source understands, upload it in the Migration Center, read the preview, import in the background and reconcile the report against Xray. The adapter understands two file shapes and brings across the test cases themselves: summary, structured steps, priority, labels and preconditions. It does not bring executions, and that single fact shapes every planning decision in this runbook.

This is a runbook for engineers and QA leads who have decided, or are seriously considering, to make TestWarden their Jira test manager. If you only want to keep Xray and add independent verification above it, nothing here is required; skip to the distinction between CSV transfer and live integration. TestWarden is an independent, policy-driven verification and intelligence layer that sits above test-management tools, CI systems, scanners and coding agents, and customers can keep using Xray alongside it. The same Jira app also includes full native test management, which is the destination for the cases this runbook moves.

Xray to TestWarden: export, check, map, import, reconcile

Step-through · illustrative data

Either keep files in the Xray Test Case Importer layout (one row per manual step sharing an Issue Id) or export Test issues from Jira with the Manual Test Steps field included.

Stage 1 of 6

Coverage matrix: what a CSV migration carries

  • Manual test cases and stepsTransfers

    Summary, steps, data and expected results.

  • Priority and labelsTransfers

    Labels become tags. Preconditions are appended to the description.

  • Cucumber and Generic definitionsTransfers

    Kept as steps text when a Definition column exists.

  • Test Repository pathKept as custom field

    Kept as a custom field. Recreate folders and file tests in bulk.

  • Requirement coverageRebuild or verify separately

    Re-link tests to Jira issues; coverage is then computed in Jira.

  • Test Sets and Test PlansRebuild or verify separately

    Rebuild as TestWarden plans and cycles from the imported library.

  • Test Executions and run resultsDoes not transfer

    Not imported. Keep Xray readable or archive before the subscription lapses.

  • Attachments and Precondition issuesDoes not transfer

    Outside the adapter.

Two different things people call “integration”

  • A one-time copy of test cases from a file you exported.
  • Moves definitions into TestWarden’s own library. After import they are native TestWarden tests.
  • Needs the QA Admin role in TestWarden and a file under 10 MB and 10,000 rows.
  • Brings no execution history.
File layouts follow the Xray Test Case Importer format documented by Xray; the rows below are invented. This path copies manual test cases only. It is not a live Xray Cloud integration.

The walkthrough above uses invented rows to follow a file from export to reconciliation, shows how Xray columns map into TestWarden, and lets you filter a coverage matrix by what transfers, what is kept as a custom field, what you must rebuild and what does not transfer at all. The prose below states the same facts in full.

What this migration is, and what it is not

A migration runbook is only useful if it is honest about its boundary. Here is the boundary in one table.

Xray conceptResult of the CSV migrationWhat to do
Manual test cases (summary, description)Transfers as TestWarden tests.Reconcile counts and sample content.
Manual steps: action, data, expected resultTransfers as structured steps.Open several many-step tests side by side.
PriorityTransfers.Check the sample for defaulted values.
LabelsTransfers as tags.Use tags to filter the imported batch.
Preconditions on the test rowAppended to the description.Check that they read naturally in the description.
Cucumber and Generic tests with a Definition columnThe script is kept as the steps text.Expect a script block rather than split steps.
Test Repository pathKept as a custom field.Recreate folders in the shared Library and file tests in bulk.
Requirement coverageNot computed from the file.Re-link tests to Jira issues; coverage is then computed in Jira.
Test Sets and Test PlansNot imported.Rebuild as TestWarden plans and cycles from the imported library.
Test Executions and run resultsNot imported.Keep Xray readable, or archive before the subscription lapses.
Attachments and Precondition issuesOutside the adapter.Archive separately if you need them.

Nothing in the migration modifies Xray. It reads a file you exported, so your source of truth is untouched, and you can run the whole process as a rehearsal and discard it.

What the Xray adapter accepts

The Migration Center has a source called Xray Test Case Importer CSV. It reads two shapes of file, and knowing which one you have saves most of the troubleshooting.

  • The Test Case Importer layout. One row per manual step. The test is identified by Issue Id (or TCID, or Issue key), test-level columns appear on the first row (Test Summary, Test Priority, Labels, Description, Precondition, Test Repository Path) and the step columns are Action, Data and Result. Rows that share an identifier fold into one test with several steps.
  • A Jira CSV export of Test issues that includes the Manual Test Steps field. That field contains JSON describing the steps. Use it, and not the HTML-rendered variant of the export: the importer rejects HTML with an explicit error rather than guessing.

Cucumber and Generic tests that carry a Definition column keep that script as the steps text. Priority is mapped, labels become tags, and preconditions are appended to the description. Every unrecognised column is preserved as a custom field named Xray: <column>, so a column you forgot you had is not silently dropped. That behaviour is deliberate: a migration that quietly discards data is worse than one that keeps too much.

Xray documents the CSV layout it expects on import in its Test Case Importer examples, which shows one row per step sharing an issue id and repeating only action, data and result. If you already hold files in that layout, you can skip the export step. If you do not, the Jira export route below produces a usable starting point.

Step 1: export from Xray

To produce a file from an existing Xray project, filter the Test issues you want in Jira, then export from the Jira issue view. Atlassian documents the procedure in Export issues from Jira Cloud in CSV format: open the list, use More actions, then Export, and choose the all-fields CSV. Add or keep the Xray Manual Test Steps column so that the steps are in the file. Jira writes UTF-8, so inspect the file in a UTF-8-aware editor.

Xray’s own documentation does not describe a single “export tests with steps to CSV” button that we could verify, and exports differ by Xray edition and configuration. Treat the Jira export as a starting point and let the TestWarden preview be the judge of your file, not a promise from either vendor.

Choosing what to export

Use JQL to decide the unit of work. Splitting by project is the most natural boundary; splitting by label or by component works when one project is large. Each file becomes one migration job, which keeps reconciliation tractable: you compare the imported count with the number of Test issues returned by the same JQL, and any difference has a short list of possible causes. A single enormous file concentrates every problem into one hard-to-read report.

Decide also whether to include archived or obsolete tests. A migration is a rare chance to leave behind tests nobody has run in two years. Many teams export only the tests that appear in a recent plan or carry a recent execution, then keep the remainder in Xray read-only. That decision belongs to a QA lead, not to the importer, and it is far easier to make before the import than after.

Step 2: prepare the file and the account

  • Role. You need the QA Admin role in TestWarden. Migration is admin-only.
  • Size. One file per job, up to 10 MB and 10,000 rows. In the importer layout a test with many steps spans many rows, so row count can be several times the test count. If you are near the limit, split by JQL.
  • Detectable columns. Open the CSV and confirm there is a summary column and a step, definition or Manual Test Steps column. Without one of those the adapter reports that the file does not look like an Xray test export, which is the correct and helpful outcome for a wrong file.
  • Encoding and line breaks. Multi-line step text inside quoted cells is normal. Opening and re-saving in a spreadsheet application can change quoting or encoding, so keep an untouched copy of the original export.

Pre-flight checks

  1. Confirm the edition and layout

    Is this the Test Case Importer layout or a Jira export with Manual Test Steps? The answer decides which columns you should expect.

  2. Count the Test issues

    Run your JQL in Jira and note the count. It is the number you will reconcile against.

  3. Reject HTML-rendered steps

    If Manual Test Steps is rendered as HTML, re-export the JSON field. The importer will not parse markup.

  4. Keep the original

    Store the untouched export. It is your evidence of what was migrated and your input for a clean re-run.

Steps 3 and 4: map, preview and import

  1. Open Migration in TestWarden, choose Xray Test Case Importer CSV and upload the file. The mapping is detected for you, so there is usually nothing to configure.
  2. Read the preview: Will import, Will skip, Total rows, the reason for every skipped row and a sample of mapped tests. Check that grouped step rows came out as one test with several steps rather than several one-step tests.
  3. Commit. The import runs in the background in batches of 200 with checkpoints. You can close the panel and it resumes. Re-previewing the same file and mapping reuses the job instead of duplicating rows.
  4. Reconcile with the report, as described in the next section.

Because the adapter detects the mapping itself, the preview is where your judgment goes. The three most informative things to look at are the skipped rows, the sample of a test with many steps, and the custom fields. A skipped row is usually a row without a summary or a stray continuation line. A many-step test shows whether grouping worked. The custom fields confirm that Test Repository Path and any other unrecognised columns were preserved as Xray: <column> rather than lost.

Every source goes through the same preview, background import and report. Imported tests carry the label “Imported from migration” and a source reference.

Cucumber and Generic tests

If your Xray project mixes manual tests with Cucumber or Generic tests, expect those to arrive differently. Where a Definition column exists, its content is kept as the steps text; the importer does not attempt to parse Gherkin into structured steps. For a Cucumber scenario that is usually the right outcome, because the scenario text is the test. But it means such tests will show a script block in the steps area, and you should decide whether automated tests belong in a test manager at all once their results flow from CI. Often the more durable answer is that automated tests live in the repository, and TestWarden receives their results as evidence for the exact build.

Step 5: reconcile

Reconciliation is the evidence that a migration happened correctly. In the report, filter by Imported, Imported with warnings, Skipped and Failed.

  • Count. Compare the imported count with your Xray count for the same JQL. Differences should be explained by skipped rows you agree with, not by surprise.
  • Side by side. Open a handful of tests with many steps and compare each one with Xray. Check step order, data and expected results. Many-step tests are where grouping errors hide.
  • Warnings. Each imported-with-warnings row is a decision. Accept it, or fix the value after import with bulk edit.
  • Custom fields. Confirm that the Xray columns you care about appear as custom fields on a sample of tests.

Is this Xray export ready to import?

Interactive · self-scored
  1. 1.Do you know which layout you have?

    Importer layout, or Jira export with Manual Test Steps as JSON.

  2. 2.Is the Manual Test Steps field JSON rather than HTML?

    HTML-rendered exports are rejected by design.

  3. 3.Do you have the Xray count for the same JQL?

    It is your reconciliation target.

  4. 4.Is the file under 10 MB and 10,000 rows, or split?

    Rows can exceed tests in the importer layout.

  5. 5.Do you have a plan for executions, sets, plans and attachments?

    None of them transfer.

  6. 6.Is someone with the QA Admin role available?

    Migration is admin-only.

0 of 12 points

Answer every row to see a reading.

A self-check for the file and the plan. It does not read Xray or TestWarden.

Step 6: structure what the CSV cannot carry

  • Folders. The Test Repository path is kept as a custom field. Recreate the folders and tags in the shared Library, then use bulk actions to file tests, filtering on that field.
  • Sets and plans. Rebuild Test Sets and Test Plans as TestWarden plans and cycles built from the imported library. Do not recreate every historical set; recreate the ones you will run next.
  • Requirement coverage. Re-link tests to Jira issues. Coverage is then computed in Jira from the links, rather than imported from a file whose links may have gone stale.
  • Automation. Decide which tests are executed manually in TestWarden and which are covered by automated CI evidence submitted to The Warden.

Once cycles start, every attempt is version-pinned from the first run, so editing an imported test during a cycle does not rewrite what earlier attempts verified. That is one of the practical reasons teams use migration as an opportunity to tidy tests that were previously too risky to touch.

What to do with old execution history

Historical Xray executions are not imported, and nothing in the migration changes them. Keep Xray readable for as long as you need those records, or archive them before you let the subscription lapse. Test Executions are Jira issues, so the Jira CSV export captures their issue-level fields. Check the file for the result detail you require, because per-step results may not appear in it.

Plan the cutover as a dated event. Pick a day after which new attempts are recorded in TestWarden, write it down, and keep Xray access until your retention period for older releases has passed. For a release audited a year later, the answer to “where is the evidence” is then unambiguous: before the date, in Xray; after the date, in TestWarden’s Quality Memory, where decisions, evidence receipts and attempts are retained per tenant and append-only.

CSV transfer is not a live Xray integration

It is easy to confuse two things people call “Xray integration”. The CSV migration copies manual test cases once. A live integration reads results from Xray’s API while Xray remains your system of record. TestWarden’s Xray Cloud collector is the second kind: a read-only collector that runs in your own CI, authenticates to Xray Cloud with its GraphQL API using credentials you hold in your CI secret store, and produces evidence that an attestor signs and The Warden evaluates for an exact build.

Be careful about what that means today. The Xray collector passes documented-contract HTTP tests and a signed offline HELD-to-repaired-CLEARED test, and its live vendor certification is pending; no vendor is certified. The Forge application does not store your Xray credentials, and the collector needs only read access. Do not describe it to colleagues as a shipped, certified Xray integration. If your aim is “keep Xray, add independent verification”, you can also do that today by having CI submit the JUnit XML that your automated tests already emit. The Integrations page tracks the status of each provider, and Warden evidence for developers explains the submission formats.

Choose CSV migration when

  • You want your manual test library to live in TestWarden.
  • You are leaving Xray or consolidating Jira test tools.
  • You can archive Xray executions separately.

Choose keep-and-verify when

  • Xray remains the team’s test manager and reporting source.
  • You want The Warden to decide whether combined evidence is enough for a release.
  • You would rather change nothing about test authoring this quarter.

Troubleshooting the preview

Most failed or surprising previews trace back to a short list of causes. Work through them in this order, because the early ones are the most common and the cheapest to fix.

What you seeLikely causeFix
“Does not look like an Xray test export”No summary column, or no step, definition or Manual Test Steps column.Re-export with the Xray steps field included, or use the Test Case Importer layout.
An explicit HTML errorManual Test Steps was exported in its rendered HTML form.Export the JSON field, not the rendered variant.
Every step became its own testThe identifier column is missing or differs between rows of one test.Make sure Issue Id, TCID or Issue key repeats identically on every row of a test.
Steps run together in one blockLine breaks were lost when the file was edited or re-saved.Go back to the untouched export and avoid re-saving through a spreadsheet.
Many rows skippedBlank summaries, or continuation rows detached from their test.Read the skip reasons; fix the rows in the file, then re-preview.
Fewer tests than the JQL countThe export was filtered, paged or permission-limited.Re-export as a user who can see every issue, and compare counts again.

A final habit worth adopting: change one thing at a time and re-preview. Because re-previewing the same file and mapping reuses the job, a preview is cheap, and the fastest route to a clean import is a handful of small corrections rather than one large rewrite. When the preview reads the way you intended, the import itself is the least eventful step in the whole process, which is exactly how a migration should feel.

Frequently asked questions

Does TestWarden import Xray test executions?

No. Test Executions, run results, Test Sets, Test Plans, Precondition issues and attachments are outside the adapter. Keep Xray readable or archive that history before the subscription lapses.

Which Xray exports does the adapter accept?

The Test Case Importer layout (one row per manual step, identified by Issue Id, TCID or Issue key) and a Jira CSV export of Test issues that includes the Manual Test Steps field as JSON. HTML-rendered exports are rejected with an explicit error.

What happens to Xray columns TestWarden does not recognise?

They are preserved as custom fields named “Xray: <column>”, so nothing in your file is silently dropped.

Can I keep Xray and still use TestWarden?

Yes. CI can submit the JUnit XML your automated tests produce to The Warden. A read-only Xray Cloud collector also exists in source, with live vendor certification pending.

How large can an import be?

One file per job, up to 10 MB and 10,000 rows. Split larger exports by JQL, for example by project or label. Imports run in batches of 200 with checkpoints.

Is migration reversible?

Xray is not modified, so your source is intact. Imported tests carry the label “Imported from migration” and a source reference, which makes the batch easy to find and review.

For the decision itself, see the Xray alternative comparison and choosing test management for Jira Cloud. Sibling runbooks cover AIO Tests and Zephyr Scale, and the Migration Center overview lists every supported source. To try it on one project, get in touch or open the Pricing page to see what an evaluation involves; the preview shows what will happen before any test is created.

XraymigrationCSVrunbookJira

Xray alternative

Compare TestWarden as an Xray alternative

Read more
Written by Alt Datum, the provider of TestWarden. The provider of TestWarden. TestWarden is test management and independent verification for Jira Cloud.

Related articles

  • MigrationOctober 6, 20265 min read

    Runbook: move Zephyr Scale test cases into TestWarden

    Export from the Zephyr Scale library, save as CSV, map headers and steps, preview and reconcile. Includes the historical-data limits and what stays in Zephyr Scale.

  • MigrationOctober 15, 20266 min read

    Runbook: move AIO Tests cases into TestWarden with CSV

    A complete runbook for moving AIO Tests cases into TestWarden: export, mapping, preview, row validation, import, reconciliation, and what to keep in AIO instead.

  • Test managementOctober 6, 20265 min read

    Choosing test management for Jira Cloud: an evaluation checklist

    How to evaluate Xray, AIO Tests, Zephyr Scale, TestWarden or anything else: an interactive scorecard, a trial protocol and the questions that separate demos from daily use.

  • Test managementOctober 6, 20265 min read

    Version-pinned test execution for QA leads

    For QA leads: the data-integrity problem behind test execution history, how version pinning solves it, what it does not solve, and a trial you can run on any tool.