Import & Export
Import test cases from Excel or CSV files and export your test suite for sharing or migration.
Import & Export
TestKase supports importing test cases from Excel (.xlsx, .xls) and CSV (.csv) files, and exporting your existing test cases to CSV. This is useful for migrating from another tool, sharing test cases with stakeholders who prefer spreadsheets, or bulk-creating test cases from a specification document.
Importing test cases
- Navigate to the Test Cases section and click the Import button () in the toolbar.
- Upload your file. Supported formats: .xlsx, .xls, .csv — max 5 MB and max 1,000 rows. A file over either limit is rejected before mapping, so split large migrations into batches.
- If the file is an Excel workbook with multiple sheets, select which sheet to import from.
- On the Column Mapping screen, map each column in your file to a TestKase field. Columns are auto-mapped where possible. At minimum, you must map a column to the Title field.
- Review the Preview & Validate screen. TestKase performs a dry-run validation and highlights any rows with errors or warnings.
- Click Import to create the test cases. The import runs as a background job — the dialog polls for progress and you can close it without cancelling the import. A summary shows how many were imported and how many failed.
File limits
| Limit | Value | What you see when you exceed it |
|---|---|---|
| File size | 5 MB | The file is refused as soon as you pick it, with the toast File size exceeds 5MB limit. Nothing is uploaded. |
| Rows | 1,000 | The file uploads and is parsed, then the wizard stops before column mapping with File contains 1,532 rows. Maximum allowed is 1,000 rows per import. Nothing is created. |
| Formats | .xlsx, .xls, .csv | Any other file type is rejected with Unsupported file format. Please upload .csv, .xlsx, or .xls. An empty file is rejected with File is empty or missing. |
The row count is the number of rows in the file, not the number of test cases. Because step rows share the 1,000, a file of 300 test cases with three steps each is roughly 900 rows and fits; the same 300 cases with four steps each does not. Split a large migration into batches of a few hundred test cases and import them one after another — folders are matched by path, so cases from separate batches land in the same folders.
The import runs in the background
Clicking Import hands the file to a background job and returns straight away. The dialog polls the job and shows progress as rows are processed.
- You can close the dialog — a toast confirms Import is running in the background. Your test cases will appear when complete. The import continues and the test case list refreshes as rows land.
- Closing the dialog does not cancel the import, and there is no way to cancel one once it has started. If you started the wrong file, let it finish and then delete the imported test cases.
- If the job fails outright, the failure is recorded against the job rather than being reported as per-row errors.
Importing into folders
The folder you select in the sidebar does not determine where imported test cases go. Instead, you specify the target folder per test case using a Folder column in your CSV or Excel file.
How it works
Add a column named Folder (or Folder Path / Folder Name) to your file and set the folder path for each test case:
Title,Summary,Folder
"Login test","Verify login",Authentication
"Signup test","Verify signup",Authentication / Registration
"API health check","Check API",Regression / API / HealthThis creates the following folder structure automatically:
Authentication
├── Login test
└── Registration
└── Signup test
Regression
└── API
└── Health
└── API health checkRules
| Rule | Detail |
|---|---|
| Separator | Use / (forward slash) to separate parent and child folders. Spaces around / are optional. |
| Max depth | 3 levels (e.g. Level 1 / Level 2 / Level 3). Deeper nesting is not supported. |
| Auto-creation | Folders that don't exist are created automatically during import. |
| Existing folders | If the folder already exists, the test case is added to it — no duplicates are created. |
| Empty value | If the Folder column is empty or missing, the test case is imported into the root (no folder). |
Common patterns
All test cases in one folder:
Title,Folder
"Test 1",Smoke Tests
"Test 2",Smoke Tests
"Test 3",Smoke TestsNested folders (2 levels):
Title,Folder
"Valid login",Authentication / Login
"Invalid login",Authentication / Login
"Signup flow",Authentication / RegistrationMixed — some in folders, some in root:
Title,Folder
"Login test",Authentication
"Quick check",
"API test",Regression / APISelecting a folder in the sidebar before clicking Import is for filtering the view — it does not affect where imported test cases are placed. Always use the Folder column in your file to control placement.
Importing test steps
You can import test cases with their test steps in a single file. The import uses a row-grouping convention:
- A row with a Title starts a new test case.
- A row with an empty Title is treated as an additional test step for the previous test case.
Map the following step columns during the column mapping step:
| Column | Maps to | Description |
|---|---|---|
| Step Description | step_description | The step instruction (required for step rows) |
| Step Test Data | step_test_data | Input data for the step (optional) |
| Step Expected Result | step_expected_result | Expected outcome (optional) |
A test case row can also include step fields — this becomes the first step. Subsequent rows with empty Title add more steps to the same test case. Up to 50 steps per test case are supported.
Example structure:
| Title | Summary | Priority | Step Description | Step Test Data | Step Expected Result |
|---|---|---|---|---|---|
| Login - Valid credentials | Verify login works | Major | Navigate to login page | /login | Login page displays |
| Enter valid email | [email protected] | Email accepted | |||
| Click Sign In | Dashboard appears | ||||
| Login - Invalid password | Verify error on wrong password | Minor | Navigate to login page | /login | Login page displays |
| Enter wrong password | wrong123 | Error message shown |
In this example, the first test case ("Login - Valid credentials") gets 3 steps, and the second ("Login - Invalid password") gets 2 steps.
The Excel template includes an example showing this multi-row structure. Download it from the Upload step to see the recommended format.
Download import template
On the Upload step, you can download a template in two formats:
- Excel (.xlsx) — recommended. Includes:
- Sheet 1 "Test Cases" — styled header row plus a three-row worked example (one test case row followed by two step rows, demonstrating the multi-row step convention) and dropdown menus for list-type fields (Priority, Status, Platform, custom single/multi-list fields, etc.), making it easy to enter valid values.
- Sheet 2 "Field Reference" — a reference table showing each field's name, type, whether it is mandatory, and allowed values, followed by notes on the Owner format, the UTC date format, and the 50-step cap.
- CSV — the same headers and the same three example rows, without the dropdown validation.
Both templates respect your project's field visibility settings — hidden fields are excluded automatically. Only fields marked as visible in your project configuration will appear as columns.
The Excel template is the best starting point for new imports. Dropdown menus prevent typos in list fields, and the Field Reference sheet documents all available values without leaving the spreadsheet.
Column mapping
TestKase auto-maps columns based on header names using case-insensitive matching and common aliases (e.g. "Name" → Title, "Description" → Summary, "Preconditions" → Precondition, "Steps" → Step Description, "Step Result" → Step Expected Result). You can override any mapping using the dropdown selector.
Custom fields appear in a separate group in the mapping dropdown. Values are coerced per custom field type:
- TEXT → stored as-is
- NUMBER → must be a valid number
- SINGLE_LIST → must be one of the allowed values
- MULTI_LIST → comma-separated values
- CALENDAR → must be in YYYY-MM-DD format
Validation & error handling
During the preview step, TestKase validates every row:
| Check | Result |
|---|---|
| Missing mandatory field | Row error |
| Invalid dropdown value | Row error listing allowed values |
| Invalid custom field type | Row error (e.g. "expects NUMBER, got 'abc'") |
| Title exceeds 300 characters | Row error |
| Owner not found in project | Row warning — Owner "Jane Doe" not found in project. The row still imports, without an owner. |
| Column mapped to a custom field that no longer exists | Row warning — Unknown custom field "X" |
| A step row carrying test case fields | Row warning — only the step fields are read; the rest of that row is ignored |
| Empty row (all blank) | Skipped silently |
Rows with errors are always skipped and the rest of the file still imports. Partial imports are fully supported — the results screen shows exactly which rows succeeded and which failed.
The Skip rows with errors and Auto-create folders checkboxes on the preview screen are not sent to the import request. Both behaviours are always on regardless of how you set the boxes: error rows are always skipped, and missing folders are always created.
Sample CSV format
Basic import (test cases only):
Title,Summary,Priority,Status,Automated,Precondition,Labels,Folder
"Login - Valid credentials","Verify user can log in with correct email and password",Major,Approved,No,"User account exists","login,authentication",Authentication
"Login - Invalid password","Verify error message when wrong password is entered",Minor,Approved,No,"User account exists","login,negative",AuthenticationImport with test steps:
Title,Summary,Priority,Status,Precondition,Step Description,Step Test Data,Step Expected Result
"Login - Valid credentials","Verify login flow",Major,Approved,"User account exists","Navigate to login page","/login","Login page displays"
"","","","","","Enter valid email and password","[email protected] / Pass123","Fields accepted"
"","","","","","Click Sign In button","","Dashboard appears"
"Login - Invalid password","Verify error on wrong password",Minor,Approved,"User account exists","Navigate to login page","/login","Login page displays"
"","","","","","Enter wrong password","wrong123","Error message shown"In the steps example, rows with an empty Title are treated as additional steps for the previous test case.
Exporting test cases
- Navigate to the Test Cases section.
- Optionally apply filters to narrow the export to specific test cases (e.g., only Approved, Blocker-priority tests).
- Click the Export CSV button () in the toolbar.
- A CSV file is downloaded. If you have rows selected, only those rows are exported; with nothing selected, every test case matching your current filters is exported — not just the current page.
The exported CSV contains exactly the columns currently visible in the test case table — no more. Use the column configuration control to show the columns you want before exporting; hidden columns, including custom fields, are not written. Exporting from the folder sidebar adds Folder Path.
You can export test cases, edit them in a spreadsheet application (Excel, Google Sheets), and re-import them. Because the export only carries the visible columns and never carries test steps, make every column you care about visible first — otherwise the round trip silently drops summary, precondition and steps.
See also
- Test Cases — Overview, creation, detail tabs, and field reference
- Test Steps — Define step-by-step execution procedures
- Folders & Organization — Organize test cases with folders, search, and filters
- Bulk Operations — Clone and bulk update test cases
- History & Attachments — Execution history, change tracking, and file attachments
- Versioning — Automatic version tracking and execution version recording
- Best Practices — Guidelines and FAQ
Questions
▶Why are my test steps missing from the export?
Test steps are never included in the CSV export. There is no option to add them. If you need steps out of TestKase, read them through the API.
▶What is the import row limit?
The 1,000-row check runs after the upload, on the whole file, and rejects the file outright. It is not a partial import: no test cases are created and there is nothing to clean up before you retry with a smaller file.
