Test case 378827 in project PSB has steps present in database but invisible in Azure DevOps Web UI due to malformed XML structure.
<steps id="0" last="2">
<step id="1" type="ActionStep">
<parameterizedString isformatted="true">Step text</parameterizedString>
<parameterizedString isformatted="true">Expected result</parameterizedString>
</step>
<step id="2" type="ActionStep">
<parameterizedString isformatted="true">Step text</parameterizedString>
<parameterizedString isformatted="true">Expected result</parameterizedString>
</step>
</steps><steps id="0" last="2">
<step id="1" type="ActionStep">
<parameterizedString>Поместить файл configuration_1.csv</parameterizedString>
</step>
<step id="2" type="ActionStep">
<parameterizedString>Запустить мигратор</parameterizedString>
<description>- Конфигурация успешно создана\n- Файл перемещён в CompletedFilesDir</description>
</step>
</steps>- Issue:
isformatted="true"attribute missing from<parameterizedString>elements - Impact: Azure DevOps Web UI cannot properly render the content
- Location: All
<parameterizedString>elements
- Issue: Different structure between steps
- Step 1: Only one
<parameterizedString>(missing expected result) - Step 2:
<parameterizedString>+<description>(wrong element type)
- Step 1: Only one
- Impact: Parser confusion in Azure DevOps Web UI
- Issue: Using
<description>instead of second<parameterizedString>for expected results - Impact: Azure DevOps expects specific schema with two
<parameterizedString>elements per step
src/tools/testplans.ts(lines 229-276)src/tools/testing/utils.ts(lines 167-217)
testcase_update_case→ usesutils.tsversiontestplan_create_test_case→ usestestplans.tsversion
| Aspect | testplans.ts | utils.ts |
|---|---|---|
| Empty input handling | filter(line.trim() !== "") |
Returns "" for empty/whitespace |
| XML structure | Identical schema | Identical schema |
| Escaping logic | Same characters escaped | Same characters escaped |
| Required attributes | Includes isformatted="true" |
Includes isformatted="true" |
The stored XML fails Azure DevOps schema validation due to:
- Missing required
isformattedattributes - Inconsistent step structure
- Non-standard element usage (
<description>vs<parameterizedString>)
- Update test case using
testcase_update_casetool - Provide steps with format:
"1. Step one|Expected result\n2. Step two|Expected result" - Check stored XML in database vs Web UI visibility
- Consolidate XML functions - Single source of truth
- Enforce schema compliance - Always include
isformatted="true" - Validate structure - Each step must have exactly 2
<parameterizedString>elements - Handle missing expected results - Default to standard text when not provided
- Test with actual Azure DevOps instance
- Verify Web UI rendering after fix
- Cross-tool compatibility testing
- Unicode and special character handling
- High: Data visibility issues in production Azure DevOps
- Medium: Potential impact on other XML-generating tools
- Low: API functionality (data storage works correctly)
- Create unified XML processing function
- Add comprehensive schema validation
- Test fix with test case 378827
- Audit all tools using XML formatting
- Implement safeguards to prevent future regressions