- Added validation types for EN16931 compliance in `validation.types.ts`, including interfaces for `ValidationResult`, `ValidationOptions`, and `ValidationReport`. - Introduced `VATCategoriesValidator` in `vat-categories.validator.ts` to validate VAT categories according to EN16931 rules, including detailed checks for standard, zero-rated, exempt, reverse charge, intra-community, export, and out-of-scope services. - Enhanced `IEInvoiceMetadata` interface in `en16931-metadata.ts` to include additional fields required for full standards compliance, such as delivery information, payment information, allowances, and charges. - Implemented helper methods for VAT calculations and validation logic to ensure accurate compliance with EN16931 standards.
EInvoice Test Suite
test/
├── readme.md # This file
├── helpers/
│ ├── test-utils.ts # Common test utilities and factories
│ ├── corpus.loader.ts # Test corpus file management
│ └── performance.tracker.ts # Performance measurement utilities
└── suite/
├── einvoice_format-detection/ # Format detection tests (FD)
├── einvoice_validation/ # Validation tests (VAL)
├── einvoice_pdf-operations/ # PDF operations tests (PDF)
├── einvoice_conversion/ # Format conversion tests (CONV)
├── einvoice_parsing/ # XML parsing tests (PARSE)
├── einvoice_encoding/ # XML encoding tests (ENC)
├── einvoice_error-handling/ # Error handling tests (ERR)
├── einvoice_performance/ # Performance tests (PERF)
├── einvoice_security/ # Security tests (SEC)
├── einvoice_edge-cases/ # Edge case tests (EDGE)
├── einvoice_standards-compliance/ # Standards compliance tests (STD)
└── einvoice_corpus-validation/ # Corpus validation tests (CORP)
Test ID Convention
All test files follow a strict naming convention: test.<category-id>.<description>.ts
Examples:
test.fd-01.ubl-detection.ts- UBL format detection testtest.val-01.en16931-business-rules.ts- EN16931 business rules validation testtest.pdf-01.xml-extraction.ts- PDF XML extraction test
Test Corpus Overview
Our test suite leverages an extensive corpus of 646+ real-world invoice files:
| Format | Files | Description |
|---|---|---|
| CII XML-Rechnung | 28 | German Cross-Industry Invoice samples |
| UBL XML-Rechnung | 28 | German UBL format samples |
| ZUGFeRD v1 | 24 | German hybrid PDF/XML v1 samples |
| ZUGFeRD v2/Factur-X | 97 | German/French hybrid PDF/XML v2 samples |
| PEPPOL | 2 | Large Pan-European invoice samples |
| FatturaPA | 15 | Italian electronic invoice samples |
| EN16931 Test Cases | 309 | Official validation test files |
| EDIFACT | 20 | Legacy EDI format samples |
Test Categories
1. Format Detection (FD)
Tests for validating automatic invoice format detection from XML and PDF files.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| FD-01 | UBL Format Detection | High | suite/einvoice_format-detection/test.fd-01.ubl-detection.ts |
| FD-02 | CII Format Detection | High | suite/einvoice_format-detection/test.fd-02.cii-detection.ts |
| FD-03 | ZUGFeRD v1 Detection | High | suite/einvoice_format-detection/test.fd-03.zugferd-v1-detection.ts |
| FD-04 | ZUGFeRD v2/Factur-X Detection | High | suite/einvoice_format-detection/test.fd-04.facturx-detection.ts |
| FD-05 | XRechnung Detection | High | suite/einvoice_format-detection/test.fd-05.xrechnung-detection.ts |
| FD-06 | FatturaPA Detection | Medium | suite/einvoice_format-detection/test.fd-06.fatturapa-detection.ts |
| FD-07 | PEPPOL BIS Detection | Medium | suite/einvoice_format-detection/test.fd-07.peppol-detection.ts |
| FD-08 | Unknown Format Handling | High | suite/einvoice_format-detection/test.fd-08.unknown-format.ts |
| FD-09 | Format Detection from PDF | High | suite/einvoice_format-detection/test.fd-09.pdf-format-detection.ts |
| FD-10 | Format Confidence Scoring | Medium | suite/einvoice_format-detection/test.fd-10.confidence-scoring.ts |
| FD-11 | Large File Format Detection | Medium | suite/einvoice_format-detection/test.fd-11.large-file-detection.ts |
| FD-12 | Streaming Format Detection | Low | suite/einvoice_format-detection/test.fd-12.streaming-detection.ts |
2. Validation (VAL)
Tests for validating invoice content against various standards and business rules.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| VAL-01 | EN16931 Business Rules (BR-*) | High | suite/einvoice_validation/test.val-01.en16931-business-rules.ts |
| VAL-02 | EN16931 Codelist Validation (BR-CL-*) | High | suite/einvoice_validation/test.val-02.en16931-codelists.ts |
| VAL-03 | EN16931 Calculation Rules (BR-CO-*) | High | suite/einvoice_validation/test.val-03.en16931-calculations.ts |
| VAL-04 | XRechnung CIUS Validation | High | suite/einvoice_validation/test.val-04.xrechnung-cius.ts |
| VAL-05 | ZUGFeRD Profile Validation | High | suite/einvoice_validation/test.val-05.zugferd-profiles.ts |
| VAL-06 | FatturaPA Schema Validation | Medium | suite/einvoice_validation/test.val-06.fatturapa-schema.ts |
| VAL-07 | PEPPOL BIS Validation | Medium | suite/einvoice_validation/test.val-07.peppol-bis.ts |
| VAL-08 | Syntax Level Validation | High | suite/einvoice_validation/test.val-08.syntax-validation.ts |
| VAL-09 | Semantic Level Validation | High | suite/einvoice_validation/test.val-09.semantic-validation.ts |
| VAL-10 | Business Level Validation | High | suite/einvoice_validation/test.val-10.business-validation.ts |
| VAL-11 | Custom Validation Rules | Low | suite/einvoice_validation/test.val-11.custom-rules.ts |
| VAL-12 | Validation Performance | Medium | suite/einvoice_validation/test.val-12.validation-performance.ts |
| VAL-13 | Validation Error Reporting | High | suite/einvoice_validation/test.val-13.error-reporting.ts |
| VAL-14 | Multi-Format Validation | Medium | suite/einvoice_validation/test.val-14.multi-format.ts |
3. PDF Operations (PDF)
Tests for PDF handling including extraction and embedding of XML invoice data.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| PDF-01 | XML Extraction from PDF/A-3 | High | suite/einvoice_pdf-operations/test.pdf-01.xml-extraction.ts |
| PDF-02 | ZUGFeRD v1 Extraction | High | suite/einvoice_pdf-operations/test.pdf-02.zugferd-v1-extraction.ts |
| PDF-03 | ZUGFeRD v2/Factur-X Extraction | High | suite/einvoice_pdf-operations/test.pdf-03.facturx-extraction.ts |
| PDF-04 | XML Embedding into PDF | High | suite/einvoice_pdf-operations/test.pdf-04.xml-embedding.ts |
| PDF-05 | PDF/A-3 Creation | High | suite/einvoice_pdf-operations/test.pdf-05.pdfa3-creation.ts |
| PDF-06 | Multiple Attachment Handling | Medium | suite/einvoice_pdf-operations/test.pdf-06.multiple-attachments.ts |
| PDF-07 | PDF Metadata Preservation | Medium | suite/einvoice_pdf-operations/test.pdf-07.metadata-preservation.ts |
| PDF-08 | Large PDF Handling | Medium | suite/einvoice_pdf-operations/test.pdf-08.large-pdf-handling.ts |
| PDF-09 | Corrupted PDF Recovery | High | suite/einvoice_pdf-operations/test.pdf-09.corrupted-pdf.ts |
| PDF-10 | PDF Signature Validation | Medium | suite/einvoice_pdf-operations/test.pdf-10.signature-validation.ts |
| PDF-11 | PDF Compression | Low | suite/einvoice_pdf-operations/test.pdf-11.compression.ts |
| PDF-12 | Concurrent PDF Operations | Medium | suite/einvoice_pdf-operations/test.pdf-12.concurrent-operations.ts |
4. Format Conversion (CONV)
Tests for converting between different electronic invoice formats.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| CONV-01 | CII to UBL Conversion | High | suite/einvoice_conversion/test.conv-01.cii-to-ubl.ts |
| CONV-02 | UBL to CII Conversion | High | suite/einvoice_conversion/test.conv-02.ubl-to-cii.ts |
| CONV-03 | ZUGFeRD to XRechnung | High | suite/einvoice_conversion/test.conv-03.zugferd-to-xrechnung.ts |
| CONV-04 | Factur-X to UBL | Medium | suite/einvoice_conversion/test.conv-04.facturx-to-ubl.ts |
| CONV-05 | FatturaPA Conversion | Low | suite/einvoice_conversion/test.conv-05.fatturapa-conversion.ts |
| CONV-06 | Data Loss Detection | High | suite/einvoice_conversion/test.conv-06.data-loss-detection.ts |
| CONV-07 | Field Mapping Validation | High | suite/einvoice_conversion/test.conv-07.field-mapping.ts |
| CONV-08 | Extension Preservation | Medium | suite/einvoice_conversion/test.conv-08.extension-preservation.ts |
| CONV-09 | Round-Trip Conversion | High | suite/einvoice_conversion/test.conv-09.round-trip.ts |
| CONV-10 | Batch Conversion | Medium | suite/einvoice_conversion/test.conv-10.batch-conversion.ts |
| CONV-11 | Character Encoding | High | suite/einvoice_conversion/test.conv-11.character-encoding.ts |
| CONV-12 | Conversion Performance | Medium | suite/einvoice_conversion/test.conv-12.performance.ts |
5. XML Parsing (PARSE)
Tests for XML parsing capabilities and error recovery.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| PARSE-01 | Well-Formed XML Parsing | High | suite/einvoice_parsing/test.parse-01.well-formed-xml.ts |
| PARSE-02 | Malformed XML Recovery | High | suite/einvoice_parsing/test.parse-02.malformed-recovery.ts |
| PARSE-03 | Character Encoding Detection | High | suite/einvoice_parsing/test.parse-03.encoding-detection.ts |
| PARSE-04 | BOM Handling | Medium | suite/einvoice_parsing/test.parse-04.bom-handling.ts |
| PARSE-05 | Namespace Resolution | High | suite/einvoice_parsing/test.parse-05.namespace-resolution.ts |
| PARSE-06 | Large XML Streaming | Medium | suite/einvoice_parsing/test.parse-06.streaming-parse.ts |
| PARSE-07 | XML Schema Validation | High | suite/einvoice_parsing/test.parse-07.schema-validation.ts |
| PARSE-08 | XPath Evaluation | Medium | suite/einvoice_parsing/test.parse-08.xpath-evaluation.ts |
| PARSE-09 | Entity Reference Resolution | Medium | suite/einvoice_parsing/test.parse-09.entity-references.ts |
| PARSE-10 | CDATA Section Handling | Low | suite/einvoice_parsing/test.parse-10.cdata-sections.ts |
| PARSE-11 | Processing Instructions | Low | suite/einvoice_parsing/test.parse-11.processing-instructions.ts |
| PARSE-12 | Memory-Efficient Parsing | High | suite/einvoice_parsing/test.parse-12.memory-efficiency.ts |
6. XML Encoding (ENC)
Tests for XML generation and encoding.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| ENC-01 | UTF-8 Encoding | High | suite/einvoice_encoding/test.enc-01.utf8-encoding.ts |
| ENC-02 | Special Character Escaping | High | suite/einvoice_encoding/test.enc-02.character-escaping.ts |
| ENC-03 | Namespace Declaration | High | suite/einvoice_encoding/test.enc-03.namespace-declaration.ts |
| ENC-04 | Pretty Printing | Low | suite/einvoice_encoding/test.enc-04.pretty-printing.ts |
| ENC-05 | Compact Encoding | Low | suite/einvoice_encoding/test.enc-05.compact-encoding.ts |
| ENC-06 | Line Length Limits | Medium | suite/einvoice_encoding/test.enc-06.line-length.ts |
| ENC-07 | International Characters | High | suite/einvoice_encoding/test.enc-07.international-chars.ts |
| ENC-08 | XML Declaration | Medium | suite/einvoice_encoding/test.enc-08.xml-declaration.ts |
| ENC-09 | Attribute Ordering | Low | suite/einvoice_encoding/test.enc-09.attribute-ordering.ts |
| ENC-10 | Empty Element Handling | Medium | suite/einvoice_encoding/test.enc-10.empty-elements.ts |
7. Error Handling (ERR)
Tests for error handling and recovery mechanisms.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| ERR-01 | Parsing Error Recovery | High | suite/einvoice_error-handling/test.err-01.parsing-recovery.ts |
| ERR-02 | Validation Error Details | High | suite/einvoice_error-handling/test.err-02.validation-errors.ts |
| ERR-03 | PDF Operation Errors | High | suite/einvoice_error-handling/test.err-03.pdf-errors.ts |
| ERR-04 | Format Conversion Errors | High | suite/einvoice_error-handling/test.err-04.conversion-errors.ts |
| ERR-05 | Error Context Information | Medium | suite/einvoice_error-handling/test.err-05.error-context.ts |
| ERR-06 | Error Recovery Strategies | High | suite/einvoice_error-handling/test.err-06.recovery-strategies.ts |
| ERR-07 | Error Serialization | Medium | suite/einvoice_error-handling/test.err-07.error-serialization.ts |
| ERR-08 | Concurrent Error Handling | Medium | suite/einvoice_error-handling/test.err-08.concurrent-errors.ts |
| ERR-09 | Error Metrics Collection | Low | suite/einvoice_error-handling/test.err-09.error-metrics.ts |
| ERR-10 | Custom Error Classes | High | suite/einvoice_error-handling/test.err-10.custom-errors.ts |
8. Performance (PERF)
Tests for performance characteristics and optimization.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| PERF-01 | Format Detection Speed | High | suite/einvoice_performance/test.perf-01.detection-speed.ts |
| PERF-02 | Validation Performance | High | suite/einvoice_performance/test.perf-02.validation-performance.ts |
| PERF-03 | PDF Extraction Speed | High | suite/einvoice_performance/test.perf-03.pdf-extraction.ts |
| PERF-04 | Conversion Throughput | Medium | suite/einvoice_performance/test.perf-04.conversion-throughput.ts |
| PERF-05 | Memory Usage Profiling | High | suite/einvoice_performance/test.perf-05.memory-usage.ts |
| PERF-06 | CPU Utilization | Medium | suite/einvoice_performance/test.perf-06.cpu-utilization.ts |
| PERF-07 | Concurrent Processing | High | suite/einvoice_performance/test.perf-07.concurrent-processing.ts |
| PERF-08 | Large File Processing | High | suite/einvoice_performance/test.perf-08.large-files.ts |
| PERF-09 | Streaming Performance | Medium | suite/einvoice_performance/test.perf-09.streaming.ts |
| PERF-10 | Cache Efficiency | Medium | suite/einvoice_performance/test.perf-10.cache-efficiency.ts |
| PERF-11 | Batch Processing | High | suite/einvoice_performance/test.perf-11.batch-processing.ts |
| PERF-12 | Resource Cleanup | High | suite/einvoice_performance/test.perf-12.resource-cleanup.ts |
9. Security (SEC)
Tests for security features and vulnerability prevention.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| SEC-01 | XML External Entity (XXE) Prevention | High | suite/einvoice_security/test.sec-01.xxe-prevention.ts |
| SEC-02 | XML Bomb Prevention | High | suite/einvoice_security/test.sec-02.xml-bomb.ts |
| SEC-03 | PDF Malware Detection | High | suite/einvoice_security/test.sec-03.pdf-malware.ts |
| SEC-04 | Input Validation | High | suite/einvoice_security/test.sec-04.input-validation.ts |
| SEC-05 | Path Traversal Prevention | High | suite/einvoice_security/test.sec-05.path-traversal.ts |
| SEC-06 | Memory DoS Prevention | Medium | suite/einvoice_security/test.sec-06.memory-dos.ts |
| SEC-07 | Schema Validation Security | Medium | suite/einvoice_security/test.sec-07.schema-security.ts |
| SEC-08 | Cryptographic Signature Validation | High | suite/einvoice_security/test.sec-08.signature-validation.ts |
| SEC-09 | Safe Error Messages | Medium | suite/einvoice_security/test.sec-09.safe-errors.ts |
| SEC-10 | Resource Limits | High | suite/einvoice_security/test.sec-10.resource-limits.ts |
10. Edge Cases (EDGE)
Tests for unusual scenarios and extreme conditions.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| EDGE-01 | Empty Invoice Files | Medium | suite/einvoice_edge-cases/test.edge-01.empty-files.ts |
| EDGE-02 | Gigabyte-Size Invoices | Low | suite/einvoice_edge-cases/test.edge-02.gigabyte-files.ts |
| EDGE-03 | Deeply Nested XML Structures | Medium | suite/einvoice_edge-cases/test.edge-03.deep-nesting.ts |
| EDGE-04 | Unusual Character Sets | Medium | suite/einvoice_edge-cases/test.edge-04.unusual-charsets.ts |
| EDGE-05 | Zero-Byte PDFs | Low | suite/einvoice_edge-cases/test.edge-05.zero-byte-pdf.ts |
| EDGE-06 | Circular References | Medium | suite/einvoice_edge-cases/test.edge-06.circular-references.ts |
| EDGE-07 | Maximum Field Lengths | Medium | suite/einvoice_edge-cases/test.edge-07.max-field-lengths.ts |
| EDGE-08 | Mixed Format Documents | Low | suite/einvoice_edge-cases/test.edge-08.mixed-formats.ts |
| EDGE-09 | Corrupted ZIP Containers | Medium | suite/einvoice_edge-cases/test.edge-09.corrupted-zip.ts |
| EDGE-10 | Time Zone Edge Cases | Low | suite/einvoice_edge-cases/test.edge-10.timezone-edges.ts |
11. Standards Compliance (STD)
Tests for compliance with international e-invoicing standards.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| STD-01 | EN16931 Core Compliance | High | suite/einvoice_standards-compliance/test.std-01.en16931-core.ts |
| STD-02 | XRechnung CIUS Compliance | High | suite/einvoice_standards-compliance/test.std-02.xrechnung-cius.ts |
| STD-03 | PEPPOL BIS 3.0 Compliance | High | suite/einvoice_standards-compliance/test.std-03.peppol-bis.ts |
| STD-04 | ZUGFeRD 2.1 Compliance | High | suite/einvoice_standards-compliance/test.std-04.zugferd-21.ts |
| STD-05 | Factur-X 1.0 Compliance | High | suite/einvoice_standards-compliance/test.std-05.facturx-10.ts |
| STD-06 | FatturaPA 1.2 Compliance | Medium | suite/einvoice_standards-compliance/test.std-06.fatturapa-12.ts |
| STD-07 | UBL 2.1 Compliance | High | suite/einvoice_standards-compliance/test.std-07.ubl-21.ts |
| STD-08 | CII D16B Compliance | High | suite/einvoice_standards-compliance/test.std-08.cii-d16b.ts |
| STD-09 | ISO 19005 PDF/A-3 Compliance | Medium | suite/einvoice_standards-compliance/test.std-09.pdfa3.ts |
| STD-10 | Country-Specific Extensions | Medium | suite/einvoice_standards-compliance/test.std-10.country-extensions.ts |
12. Corpus Validation (CORP)
Tests using the complete test corpus to ensure real-world compatibility.
| ID | Test Description | Priority | Implementation |
|---|---|---|---|
| CORP-01 | XML-Rechnung Corpus Processing | High | suite/einvoice_corpus-validation/test.corp-01.xml-rechnung.ts |
| CORP-02 | ZUGFeRD v1 Corpus Processing | High | suite/einvoice_corpus-validation/test.corp-02.zugferd-v1.ts |
| CORP-03 | ZUGFeRD v2 Corpus Processing | High | suite/einvoice_corpus-validation/test.corp-03.zugferd-v2.ts |
| CORP-04 | PEPPOL Large Files Processing | High | suite/einvoice_corpus-validation/test.corp-04.peppol-large.ts |
| CORP-05 | FatturaPA Corpus Processing | Medium | suite/einvoice_corpus-validation/test.corp-05.fatturapa.ts |
| CORP-06 | EN16931 Test Suite Execution | High | suite/einvoice_corpus-validation/test.corp-06.en16931-suite.ts |
| CORP-07 | Cross-Format Corpus Validation | Medium | suite/einvoice_corpus-validation/test.corp-07.cross-format.ts |
| CORP-08 | Failed Invoice Handling | High | suite/einvoice_corpus-validation/test.corp-08.failed-invoices.ts |
| CORP-09 | Corpus Statistics Generation | Low | suite/einvoice_corpus-validation/test.corp-09.statistics.ts |
| CORP-10 | Regression Testing | High | suite/einvoice_corpus-validation/test.corp-10.regression.ts |
Running Tests
Run All Tests
cd einvoice
pnpm test
Run Specific Test Category
# Run all format detection tests
pnpm test test/suite/einvoice_format-detection
# Run all validation tests
pnpm test test/suite/einvoice_validation
Run Single Test File
# Run UBL detection test
tsx test/suite/einvoice_format-detection/test.fd-01.ubl-detection.ts
# Run EN16931 business rules test
tsx test/suite/einvoice_validation/test.val-01.en16931-business-rules.ts
Run Tests with Coverage
# Generate coverage report
pnpm test --coverage
# Run specific category with coverage
pnpm test test/suite/einvoice_validation --coverage
Run Performance Tests Only
# Run all performance tests
pnpm test test/suite/einvoice_performance
# Run with performance profiling
pnpm test test/suite/einvoice_performance --profile
Performance Benchmarks
Expected performance metrics for production use:
| Operation | Target | Acceptable | Maximum |
|---|---|---|---|
| Format Detection | <5ms | <10ms | 50ms |
| XML Parsing (1MB) | <50ms | <100ms | 500ms |
| Validation (Syntax) | <20ms | <50ms | 200ms |
| Validation (Business) | <100ms | <200ms | 1000ms |
| PDF Extraction | <200ms | <500ms | 2000ms |
| Format Conversion | <100ms | <200ms | 1000ms |
| Concurrent Operations | 100/sec | 50/sec | 10/sec |
| Memory per Invoice | <50MB | <100MB | 500MB |
Security Requirements
All security tests must pass for production deployment:
- XML Security: No XXE vulnerabilities, no billion laughs attacks
- PDF Security: Malware detection, safe extraction
- Input Validation: All inputs sanitized and validated
- Resource Limits: Memory and CPU usage bounded
- Error Handling: No sensitive data in error messages
- Path Security: No directory traversal vulnerabilities
Production Readiness Criteria
Production Gate 1: Core Functionality (>95% tests passing)
- Format detection accuracy
- Basic parsing and validation
- Simple conversions
- Error handling
Production Gate 2: Standards Compliance (>90% tests passing)
- EN16931 compliance
- Major format support (UBL, CII, ZUGFeRD)
- Validation accuracy
- PDF operations
Production Gate 3: Enterprise Ready (>85% tests passing)
- Performance under load
- Security hardening
- Full format support
- Advanced features
Test Data Management
Corpus Organization
test/assets/corpus/
├── XML-Rechnung/ # German standard samples
├── ZUGFeRDv1/ # Legacy ZUGFeRD
├── ZUGFeRDv2/ # Current ZUGFeRD/Factur-X
├── PEPPOL/ # Pan-European samples
├── fatturaPA/ # Italian samples
├── incoming/ # User-submitted samples
└── synthetic/ # Generated test cases
Test Data Guidelines
- Real-World Data: Use actual invoice samples where possible
- Anonymization: Remove sensitive business data
- Edge Cases: Include malformed and boundary cases
- Version Coverage: Test multiple versions of each standard
- Size Variety: From minimal to multi-megabyte invoices
Continuous Integration
CI Pipeline Stages
- Quick Tests (<5 min): Format detection, basic validation
- Standard Tests (<15 min): All unit tests, corpus validation
- Extended Tests (<30 min): Performance, security, edge cases
- Nightly Tests (<2 hours): Full corpus, stress tests, memory profiling
Test Reports
- Coverage reports published to
coverage/ - Performance metrics tracked in
benchmarks/ - Failing corpus files logged to
test-results/failures/
Contributing Tests
Adding New Tests
- Follow the naming convention:
test.<category>-<number>.<description>.ts - Include clear test description and expected outcomes
- Add to the appropriate category table in this README
- Ensure the test uses the test utilities and corpus
- Include performance measurements where applicable
Test Quality Guidelines
- Each test should be independent and idempotent
- Use descriptive test names and assertions
- Include both positive and negative test cases
- Document any special setup or requirements
- Clean up any generated files or resources
Test Utilities
Common Test Helpers
import { TestFileHelpers, TestInvoiceFactory, PerformanceUtils } from '../helpers/test-utils';
// Load test file from corpus
const invoice = await TestFileHelpers.loadTestFile('corpus/UBL/example.xml');
// Create test invoice
const testInvoice = TestInvoiceFactory.createMinimalInvoice();
// Measure performance
const { result, duration } = await PerformanceUtils.measure('operation', async () => {
// ... operation to measure
});
Assertion Helpers
import { InvoiceAssertions } from '../helpers/test-utils';
// Assert required fields
InvoiceAssertions.assertRequiredFields(invoice);
// Assert format detection
InvoiceAssertions.assertFormatDetection(detected, expected, filePath);
// Assert validation result
InvoiceAssertions.assertValidationResult(result, expectedValid, filePath);
Known Issues and Limitations
Current Limitations
- FatturaPA: Limited implementation, basic support only
- EDIFACT: Read-only, no generation support
- Large Files: Streaming not fully implemented for >100MB files
- Signatures: Digital signature validation in development
Test Flakiness
- Network-dependent tests may fail in offline environments
- Performance tests may vary based on system load
- Some PDF tests require specific fonts installed
Future Test Enhancements
Planned Additions
- AI-Powered Testing: Fuzzing with ML-generated invoices
- Visual Regression: PDF rendering comparison
- Internationalization: Full Unicode and RTL support testing
- Blockchain Integration: Distributed ledger validation
- Real-time Processing: Streaming and event-driven tests