← Anomaly Upload Validator

Anomaly Upload Validator · Specification artifact

Test Cases & QA Checklist

What had to pass before release.

This page is rendered from that DOCX. Same document, same words.

Anomaly Upload Validator — Test Cases & QA Checklist

Platform A · Internal Tool · v3.1.4 · September 2026

Overview

This document contains 98 test cases covering all functional areas of the Anomaly Upload Validator as of v3.1.4. Test cases are derived from user story acceptance criteria, known bugs fixed during development, and regression tests. All cases are manually executable in any modern browser.

Priority Legend

Priority Legend
PriorityDefinition
P1 - CriticalCore functional requirement. Failure blocks upload workflow or produces incorrect output data.
P2 - HighImportant feature. Failure degrades user experience significantly or causes data quality issues.
P3 - MediumQuality of life feature. Failure is noticeable but does not block core workflow.
P4 - LowMinor enhancement. Failure is cosmetic or very low impact.

Section 1 — File Ingestion (TC-01 to TC-11)

Section 1 — File Ingestion (TC-01 to TC-11)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-01Upload valid CSVTool open in browserDrag valid UTF-8 CSV onto drop zoneFilename + row count shown. Run Validation enables.✅ PassP1 - CriticalUS-01
TC-02Upload valid XLSXTool open in browserClick drop zone, browse to XLSX, select itFilename + row count shown. Run Validation enables.✅ PassP1 - CriticalUS-01
TC-03Upload empty fileTool open in browserUpload XLSX with header row but no dataError: 'File appears empty.' No validation runs.✅ PassP2 - HighUS-01
TC-04Upload unsupported typeTool open in browserDrag .pdf or .txt file onto drop zoneFile rejected. Error shown. No state change.✅ PassP2 - HighUS-01
TC-05Alias: Date → Inspection DateCSV with 'Date' column (no 'Inspection Date')Upload file, run validation'Date' treated as 'Inspection Date'. No missing column error.✅ PassP1 - CriticalUS-02
TC-06Alias: Turbine Serial Number → Serial NumberCSV with 'Turbine Serial Number' columnUpload file, run validationTreated as 'Serial Number'. No missing column warning.✅ PassP2 - HighUS-02
TC-07Alias: Links → Source ImagesCSV with 'Links' columnUpload file, run validation'Links' treated as 'Source Images'. No required field error.✅ PassP1 - CriticalUS-02
TC-08Missing required column: IDDataset with ID column removedUpload file, run validationMissing column card shown for ID. All rows show Error.✅ PassP1 - CriticalUS-03
TC-09Missing required column: CoordinatesDataset with Coordinates column removedUpload file, run validationMissing column card shown. All rows get Check Internally flag.✅ PassP1 - CriticalUS-03
TC-10Missing conditional column: BladeChamberDataset without BladeChamberUpload file, run validationShown as informational only. No rows flagged.✅ PassP3 - MediumUS-03
TC-11Column name case-sensitiveDataset with 'blade side' (lowercase)Upload file, run validation'Blade Side' shown as missing required. Lowercase not accepted.✅ PassP2 - HighUS-03

Section 2 — Row-Level Validation (TC-12 to TC-26)

Section 2 — Row-Level Validation (TC-12 to TC-26)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-12Severity: valid 1–5Dataset with Severity 1,2,3,4,5Upload file, run validationAll rows pass. No Severity errors.✅ PassP1 - CriticalUS-04
TC-13Severity: invalid (0, 6, text)Dataset with Severity 0, 6, 'High'Upload file, run validationEach invalid value raises Error: 'Must be 1–5'.✅ PassP1 - CriticalUS-04
TC-14Critical: valid (Yes/yes/YES/No)Dataset with all case variantsUpload file, run validationAll case variants accepted. No errors.✅ PassP1 - CriticalUS-04
TC-15Critical: invalid (True, Y, 1)Dataset with invalid Critical valuesUpload file, run validationEach raises Error: 'Must be Yes or No'.✅ PassP1 - CriticalUS-04
TC-16Inspection Date: valid YYYY-MM-DDDataset with correctly formatted datesUpload file, run validationAll dates pass. No date errors.✅ PassP1 - CriticalUS-04
TC-17Inspection Date: invalid DD/MM/YYYYDataset with dates as '06/09/2024'Upload file, run validationError: 'Must be YYYY-MM-DD format' for each.✅ PassP1 - CriticalUS-04
TC-18Blade Side: abbreviated codes Code 1/Code 2/Code 3/Code 4Dataset with 2-char codesUpload file, run validationAll four codes accepted as valid.✅ PassP1 - CriticalUS-05
TC-19Blade Side: full descriptive namesDataset with 'Value 1', 'Value 2' etc.Upload file, run validationAll full names accepted as valid.✅ PassP1 - CriticalUS-05
TC-20Blade Side: invalid value ('[withheld]')Dataset with an unrecognized pre-conversion value in Blade SideUpload file, run validationError raised: 'Must be a valid Blade Side value'.✅ PassP2 - HighUS-05
TC-21Coordinates: valid ≥3 pairsCoordinates = '[123,456], [234,567], [345,678]'Upload file, run validationRow passes Coordinates check.✅ PassP1 - CriticalUS-04
TC-22Coordinates: only 2 pairsCoordinates = '[123,456], [234,567]'Upload file, run validationError: 'Requires ≥3 [x,y] coordinate pairs'.✅ PassP1 - CriticalUS-04
TC-23Coordinates: emptyDataset with empty Coordinates fieldUpload file, run validationFlagged as Check Internally. NOT flagged as Error.✅ PassP1 - CriticalUS-08
TC-24Asset: emptyDataset with some empty Asset rowsUpload file, run validationCheck Internally flag raised. Not Error. Compliance score unaffected.✅ PassP1 - CriticalUS-08
TC-25Serial Number: empty or absentDataset with Serial Number missing entirelyUpload file, run validationNo flag raised. Not shown as missing column.✅ PassP1 - CriticalUS-06
TC-26Numeric fields: floating point noiseDistance (m) = '7.0000000000000007E-2'Upload file, run validation + export XLSXValue cleaned to 0.07 in output. No validation error.✅ PassP2 - HighUS-04

Section 3 — Status System & Compliance Score (TC-27 to TC-32)

Section 3 — Status System & Compliance Score (TC-27 to TC-32)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-27Compliance: all cleanAll required fields validUpload file, run validationScore = 100%. Bar is green.✅ PassP1 - CriticalUS-07
TC-28Compliance: check-internally excluded from denominator10 rows: 8 clean, 2 empty CoordinatesUpload file, run validationScore = 100% (8/8). Check Internally rows excluded.✅ PassP1 - CriticalUS-07
TC-29Compliance: errors present10 rows: 5 clean, 5 with Severity errorsUpload file, run validationScore = 50%. Bar is amber.✅ PassP1 - CriticalUS-07
TC-30Filter: Errors onlyDataset with mixed status typesRun validation → click Errors tabOnly Error rows visible. Others hidden.✅ PassP2 - HighUS-09
TC-31Filter: Manual Review shows ResolvedDataset with resolved Manual ReviewsClick Manual Review filter tabBoth unresolved and Resolved rows visible.✅ PassP2 - HighUS-09
TC-32Summary cards: correct countsKnown distribution of status typesUpload file, run validationAll five cards show correct counts.✅ PassP1 - CriticalUS-07

Section 4 — Conversion Engine (TC-33 to TC-44)

Section 4 — Conversion Engine (TC-33 to TC-44)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-33Format A: Element derivation (Format A)Format A dataset with Component + MaterialUpload file, run validation'<Component>'+'<Material>' → '<Component> - <Material>'. Correct output.✅ PassP1 - CriticalUS-10
TC-34Format B: Element derivation (Format B)Format B dataset with Component + Element (no Material)Upload file, run validation'<Component>'+'<Element>' (from Element col) → '<Component> - <Element>'.✅ PassP1 - CriticalUS-10,US-13
TC-35Element: empty Material and Element suffixComponent populated, Material = emptyUpload file, run validationInput Source Component = '<Component>'. No trailing ' - '.✅ PassP1 - CriticalUS-10
TC-36Anomaly Type: Subtype presentType and Subtype both populatedUpload file, run validationInput Source Damage Type='<Type> - <Subtype>'. Platform A='[withheld]'. Platform B='[withheld]'.✅ PassP1 - CriticalUS-11
TC-37REGRESSION: Trailing dash (Subtype empty)Type populated, Subtype='' (empty string)Upload file, run validation + export XLSXInput Source Damage Type='<Type>' (no trailing ' - '). Platform A='[withheld]'. Platform B='[withheld]'. v2.1 fix.✅ PassP1 - CriticalUS-11
TC-38Format B: Anomaly Type column (Format B)Format B dataset with 'Anomaly Type' column (no 'Type')Upload file, run validation'<Anomaly Type>'+'<Subtype>' → '<Anomaly Type> - <Subtype>'. Correctly resolved.✅ PassP1 - CriticalUS-11,US-13
TC-39Blade Side: Value 3Blade Side = 'Value 3'Upload file, run validationPlatform A = '[withheld]'. Platform B = '[withheld]'.✅ PassP1 - CriticalUS-12
TC-40Blade Side: Value 4Blade Side = 'Value 4'Upload file, run validationPlatform A = '[withheld]'. Platform B = '[withheld]'.✅ PassP1 - CriticalUS-12
TC-41Blade Side: unrecognized valueBlade Side = 'Rotor Side'Upload file, run validationManual Review raised. Shows 'MANUAL REVIEW: Rotor Side'.✅ PassP2 - HighUS-12
TC-42Blade extraction from Asset (Format A)Format A: Blade empty, Asset='Blade A: (No Serial Number)'Upload file, run validationBlade field populated as 'A'. No missing field error.✅ PassP2 - HighUS-13
TC-43Blade extraction from Blade col (Format B)Format B: Blade column = 'Blade A'Upload file, run validationBlade normalized to 'A'. No missing field error.✅ PassP2 - HighUS-13
TC-44Unknown Input Source ComponentComponent and Material pair not in the conversion tableUpload file, run validationManual Review raised. Platform A Element = 'MANUAL REVIEW: <derived value>'.✅ PassP1 - CriticalUS-10

Section 5 — Manual Review Resolution (TC-45 to TC-50)

Section 5 — Manual Review Resolution (TC-45 to TC-50)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-45Resolve via dropdownDataset with unmatched Input Source ComponentRun validation → Manual Review tab → select dropdown valueRow updates to Resolved (green). Counter increments.✅ PassP1 - CriticalUS-14
TC-46Resolved value in outputManual Review resolved with a valid Input Source Component valueResolve row → export XLSX → check column in outputXLSX shows the resolved value. Platform A/Platform B columns show correct values.✅ PassP1 - CriticalUS-14
TC-47Export blocked by unresolved reviews3 Manual Reviews, 2 resolvedResolve 2 of 3 → check export buttonButton disabled. Counter shows '2 / 3 resolved'.✅ PassP1 - CriticalUS-15
TC-48Export unlocks when all resolved3 Manual Reviews, all resolvedResolve all 3 → check export buttonButton enables. Counter shows 'All 3 resolved — ready to export'.✅ PassP1 - CriticalUS-15
TC-49Validation Report always availableUnresolved Manual Reviews presentRun validation → click Export Validation ReportCSV downloads. Not blocked by Manual Reviews.✅ PassP1 - CriticalUS-15
TC-50Zero Manual Reviews: export immediateAll values in conversion tablesUpload file, run validationExport Converted XLSX enabled immediately. No progress counter.✅ PassP1 - CriticalUS-15

Section 6 — Export (TC-51 to TC-59)

Section 6 — Export (TC-51 to TC-59)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-51Validation Report: correct columnsAny dataset with issuesRun validation → Export Validation ReportCSV has columns: Row Number, Anomaly ID, Field, Status, Detail.✅ PassP1 - CriticalUS-18
TC-52Validation Report: status labelsDataset with all four status typesExport report → open CSVStatus column has exactly: Error, Manual Review, Check Internally, Warning.✅ PassP2 - HighUS-18
TC-53Converted XLSX: two tabsValid dataset, all reviews resolvedExport Converted XLSX → open fileFile has exactly two sheets: 'Damages Report' and 'Conversions'.✅ PassP1 - CriticalUS-19
TC-54Converted XLSX: header frozenExported XLSXOpen XLSX → scroll down past row 1Header row remains visible (frozen).✅ PassP3 - MediumUS-19
TC-55Converted XLSX: VLOOKUP formulas presentExported XLSXClick Platform A Element column for any data rowFormula bar shows IFERROR(VLOOKUP(...)) — not a static value.✅ PassP1 - CriticalUS-19
TC-56REGRESSION: LEN not ISBLANK in formulaExported XLSXClick Input Source Component for row with empty MaterialFormula shows IF(LEN(...)>0,...) — not IF(ISBLANK(...),...). v2.1 fix.✅ PassP1 - CriticalUS-19
TC-57Conversions tab editableExported XLSXOpen Conversions tab → add a new mapping rowNew row visible and editable. VLOOKUP picks it up if within range.✅ PassP2 - HighUS-20
TC-58Exported filename formatSource file: 'source_dataset.xlsx'. Date: 2026-05-01Export Converted XLSXFilename: 'source_dataset_converted_2026-05-01.xlsx'.✅ PassP3 - MediumUS-19
TC-59MANUAL REVIEW fallback stringUnresolved row (if present in report)Check Platform A Element for unresolved rowShows 'MANUAL REVIEW: [original value]'.✅ PassP2 - HighUS-14

Section 7 — Dataset Statistics & Edge Cases (TC-60 to TC-67)

Section 7 — Dataset Statistics & Edge Cases (TC-60 to TC-67)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-60Anomaly countDataset with 115 data rowsUpload file, run validationTotal Anomalies card shows 115.✅ PassP2 - HighUS-16
TC-61Unique turbine countDataset with 40 unique turbine IDsUpload file, run validationUnique Turbines card shows 40.✅ PassP2 - HighUS-16
TC-62Site breakdown tableDataset with two distinct sitesUpload file, run validationBoth sites shown. Counts correct. Sorted by anomaly count desc.✅ PassP2 - HighUS-16
TC-63Auto-conversion count100 fields successfully auto-convertedUpload file, run validationFields Auto-Converted card shows 100.✅ PassP3 - MediumUS-17
TC-64Reset clears all stateDataset loaded and validatedClick Reset buttonAll cleared. Drop zone ready. Resolved values discarded.✅ PassP2 - HighUS-01
TC-65No data transmitted externallyAny dataset. Network monitor openUpload, validate, export. Monitor all network requests.No outbound requests except CDN load for SheetJS.✅ PassP1 - CriticalUS-01
TC-66Large dataset performanceDataset with 500+ rowsUpload file, run validationCompletes within 5 seconds. No browser freeze.✅ PassP2 - HighN/A
TC-67Multi-site datasetDataset with rows from two sitesUpload file, run validationAll rows processed correctly. Both sites in breakdown table.✅ PassP2 - HighUS-16

Section 8 — Regression Tests (TC-68 to TC-72)

⚠ These tests must be executed on every new version release. Regression failures indicate a previously fixed bug has been reintroduced.

Section 8 — Regression Tests (TC-68 to TC-72)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-68REGRESSION: Trailing dash bugAny dataset where Subtype is empty for some rowsUpload file, run validation. Check Input Source Damage Type for empty-Subtype rowsInput Source Damage Type = '<Type>' not '<Type> - '. Correct conversion output. (Bug fixed v2.1)✅ PassP1 - CriticalUS-11
TC-69REGRESSION: Format B Component+ElementFormat B format dataset (no Material column)Upload Format B file, run validation. Check Input Source Component.Correct derivation using Element col as suffix. No false Manual Reviews. (Bug fixed v2.1)✅ PassP1 - CriticalUS-10,US-13
TC-70REGRESSION: Format B Anomaly Type colFormat B dataset with 'Anomaly Type' column (no 'Type')Upload Format B file. Check Input Source Damage Type derivation.Anomaly Type column used correctly as base. (Bug fixed v2.1)✅ PassP1 - CriticalUS-11,US-13
TC-71REGRESSION: ISBLANK vs LEN in XLSXExported XLSX from any datasetInspect Input Source Component formula for empty-Material rowFormula shows IF(LEN(...)>0,...) not IF(ISBLANK(...),...). (Bug fixed v2.1)✅ PassP1 - CriticalUS-10,US-11
TC-72REGRESSION: Blade Side codes acceptedDataset with Code 1, Code 2, Code 3, Code 4 valuesUpload file, run validationCodes accepted as valid. No Blade Side errors. (Fix from v1.2)✅ PassP2 - HighUS-05

Section 9 — Output Fidelity (TC-73 to TC-82)

Covers the four defects fixed between v2.7.1 and v3.1.4, where the tool produced output that looked correct and was not.

Section 9 — Output Fidelity (TC-73 to TC-82)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-73Derived output headers spell both company names correctlyAny valid datasetExport converted XLSX. Read the header row from the raw file, not from a preview or summaryColumns P, Q, U, Y each render their company name as that company writes it. Columns R, V, W, Z unchanged. (Fix from v2.7.1)✅ PassP1 - CriticalUS-21
TC-74Header correction did not break the export formulasAny valid datasetExport converted XLSX. Inspect the lookup formulas in Q, R, V, W, Y, ZEach formula references the correct column letter. No formula references an empty or malformed cell address. (Fix from v2.7.1)✅ PassP1 - CriticalUS-21
TC-75A file exported before v2.7.1 still ingestsAn export produced at v2.7 or earlierUpload that file, run validationIngests exactly as before. Column matching is unaffected by the header spelling. (Fix from v2.7.1)✅ PassP2 - HighUS-21
TC-76CSV date is not shifted by machine timezoneCSV dataset with a known inspection dateSet the machine timezone west of UTC. Upload, run validation, exportThe exported date is the date in the file, not the day before. (Fix from v3.0)✅ PassP1 - CriticalUS-22
TC-77XLSX date cell is not shifted by machine timezoneXLSX dataset with genuine date cellsRepeat TC-76 with the XLSX inputThe exported date matches the source cell in every timezone tested. (Fix from v3.0)✅ PassP1 - CriticalUS-22
TC-78Dated rows raise no spurious date-format errorAny dataset with a populated date columnUpload, run validation. Count date-related errorsZero date-format errors. Before v3.0 every dated row raised one, in every timezone. (Fix from v3.0)✅ PassP1 - CriticalUS-22
TC-79A date carrying a time of day retains itDataset with a date cell holding a real time, e.g. 14:30Upload, run validation, exportThe time is preserved rather than truncated to a bare date. (Fix from v3.0)✅ PassP2 - HighUS-22
TC-80Blade Chamber reaches the exportDataset supplying a populated Blade Chamber columnUpload, run validation, export. Inspect column AAEvery row carries its Blade Chamber value. Column is not blank. (Fix from v3.1)✅ PassP1 - CriticalUS-23
TC-81Chord (%) reaches the export, as a numberDataset supplying a populated Chord (%) columnUpload, run validation, export. Inspect column AE and its cell typeEvery row carries its value, written as a number rather than text, consistent with Distance / Length / Width. (Fix from v3.1)✅ PassP1 - CriticalUS-23
TC-82Column widths match the columns they were written forAny valid datasetExport converted XLSX. Compare the width declarations against the header rowOne width entry per output column, 39 of each. No column wears its neighbour's width. (Fix from v3.1.1)✅ PassP2 - HighUS-24

Section 10 — Regression: Output Fidelity (TC-83 to TC-87)

⚠ These tests must be executed on every new version release, alongside Section 8. Each guards a defect that produced plausible-looking output and raised no error of its own.

Section 10 — Regression: Output Fidelity (TC-83 to TC-87)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-83REGRESSION: no misrendered company name anywhere in the toolTool source fileSearch the tool for the misrendered spellings of both company namesNo occurrence, in output headers, row keys, dropdown keys, field descriptions or comments. (Bug fixed v2.7.1)✅ PassP1 - CriticalUS-21
TC-84REGRESSION: timezone matrix for datesCSV and XLSX datasets with known datesRun both inputs at several timezones spanning UTC-10 to UTC+14, including one with a historical sub-minute offsetIdentical calendar date in every combination. Zero date errors. (Bug fixed v3.0)✅ PassP1 - CriticalUS-22
TC-85REGRESSION: no output column silently emptyDataset supplying every optional columnExport, then compare each output column against the input that feeds itNo column is blank where the input supplied a value. Blank means absent, not lost. (Bug fixed v3.1)✅ PassP1 - CriticalUS-23
TC-86REGRESSION: width list length matches column countTool source fileCount the entries in the column-width list and the entries in the output column listThe two counts are equal. A mismatch means widths have shifted onto the wrong columns. (Bug fixed v3.1.1)✅ PassP2 - HighUS-24
TC-87REGRESSION: conversion-driven columns do not clipTool source file and conversion tablesFor each conversion-driven column, compare its width against the longest value in its conversion tableEvery such column seats its widest possible value. (Bug fixed v3.1.4)✅ PassP3 - MediumUS-24

Section 11 — Regression: v2.3 to v2.7 Defects (TC-88 to TC-98)

⚠ Run with Sections 8 and 10 on every release. These guard bugs 1 to 8, which had no regression case until this section was added. Each surfaced through contact with a real delivered file rather than through review.

Section 11 — Regression: v2.3 to v2.7 Defects (TC-88 to TC-98)
TC IDDescriptionPreconditionsTest StepsExpected ResultResultPriorityStory Ref
TC-88REGRESSION: bare-letter blade extractedDataset where the blade is a bare letter (A / B / C) rather than a full labelUpload, run validation. Inspect output column DBlade letter resolved. No empty Asset, no Check Internally flag for it. (Bug 1, fixed v2.3)✅ PassP1 - CriticalUS-27
TC-89REGRESSION: duplicate Component columns disambiguatedDataset carrying two columns both named "Component" — one constant at inspection level, one the anomaly componentUpload, run validation. Open the detected-columns panelThe anomaly-level column is bound, not the constant one. The panel names which column was chosen. (Bug 2, fixed v2.3)✅ PassP1 - CriticalUS-02
TC-90REGRESSION: duplicate Type columns disambiguatedDataset carrying two columns both named "Type" — a task type and the damage typeUpload, run validation. Check the derived damage typeThe damage-type column is bound. Derivation is correct and raises no false Manual Review. (Bug 3, fixed v2.3)✅ PassP1 - CriticalUS-02
TC-91REGRESSION: Format B does not emit bare row numbersFormat B dataset (Element column, no Material column)Export converted XLSX. Inspect Input Source Component for several rowsValues read "Component - Element". No bare row number, no cascade of MANUAL REVIEW. (Bug 4, fixed v2.4)✅ PassP1 - CriticalUS-10
TC-92REGRESSION: derived component not doubledAny dataset that exercises the component derivationExport. Inspect Input Source ComponentValue reads "<Component> - <Material>", not "<Component> - <Component> - <Material>". Raw input values are read from the untouched input row. (Bug 5, fixed v2.4)✅ PassP1 - CriticalUS-10
TC-93REGRESSION: Element lookup free of Blade Side rowsExported XLSX, Conversions tabInspect the Element / Component section of the Conversions tabSection contains element mappings only. No Blade Side rows are present in it. (Bug 6, fixed v2.4)✅ PassP2 - HighUS-20
TC-94REGRESSION: URL entity round-tripInput file whose image URL contains one or more ampersandsExport. Compare the output hyperlink target against the input URL, character by characterByte-for-byte identical. No &amp;amp; in the output. Link resolves rather than returning not-found. (Bug 7, fixed v2.7)✅ PassP1 - CriticalUS-26
TC-95REGRESSION: literal "None" not carried throughDataset where an optional column holds the literal string "None"Upload, run validation, exportThe cell is empty in the output. The word "None" does not appear as a value. (Bug 8, fixed v2.6)✅ PassP2 - HighUS-02
TC-96Header row detected beneath a metadata preambleDataset with several rows of metadata above the real header rowUpload the fileHeader located automatically, preamble rows excluded from the data, detected row number reported on the confirmation line. (Feature, v2.3)✅ PassP1 - CriticalUS-25
TC-97<Type> - <Subtype> converts correctlyDataset containing a <Type> anomaly with <Subtype> as its subtypeUpload, run validation, export. Inspect the derived anomaly type columnsResolves through the conversion table to its Platform A and Platform B equivalents. No Manual Review flag. (Table entry added v2.4)✅ PassP2 - HighUS-11
TC-98D/E/F columns populated per the v2.5 schemaDataset supplying a blade identifier, a turbine identifier and a blade serial numberExport. Inspect columns D, E and FD holds the blade letter only; E holds the turbine identifier; F holds the blade serial. No column carries another's value. (Schema change, v2.5)✅ PassP1 - CriticalUS-27

QA Sign-off

QA Sign-off
RoleNameDateSign-off
QA / TesterMay 2026⬜ Pending
Data Operations LeadMay 2026⬜ Pending
Engineering LeadMay 2026⬜ Pending

Sign-off above covers TC-01 to TC-72 at the v2.1 scope. TC-73 to TC-98 have not been through a separate sign-off.

Anomaly Upload Validator · Platform A · Internal Use Only · v3.1.4 · September 2026 · 98 Test Cases

← Back to the Anomaly Upload Validator case study