Skip to content

Implement Comprehensive i18n Test Suite with 100% Coverage

Overview

This MR adds a comprehensive test suite for the i18n module, achieving 100% test coverage.

It ensures robust validation of language handling, fallback mechanisms, interpolation, and namespace behavior, improving reliability of multilingual support across the application.

What does this MR do and why?

Previously, the i18n configuration lacked sufficient test coverage, which created risks such as:

  • Undetected issues in language switching
  • Improper fallback behavior for unsupported languages
  • Missing validation for translation keys
  • Potential regressions in interpolation and formatting logic
  • No verification of RTL (Right-to-Left) support

This MR addresses these gaps by implementing a fully covered test suite using Vitest, ensuring all critical paths and edge cases are validated.


Changes Made

  • Added complete unit tests for i18n module

  • Covered:

    • Initialization configuration
    • Language switching (changeLanguage)
    • Language retrieval (getLanguage)
    • RTL detection (isRTL)
    • Missing translation key handling
    • Interpolation formatting (uppercase, lowercase, capitalize)
    • Namespace handling
    • Resource fallback logic
  • Mocked:

    • localStorage
    • console.warn
  • Added environment-based testing (DEV vs PROD)

  • Used vi.resetModules() for isolated module testing


Technical Details

  • Implemented tests using Vitest

  • Ensured branch coverage for all edge cases

  • Verified fallback behavior for:

    • Unsupported languages
    • Missing namespaces
    • Invalid inputs
  • Tested interpolation formatting functions thoroughly

  • Ensured no dependency on real browser APIs via mocking


Type of Change

  • 🐛 Bug fix
  • New feature
  • 💥 Breaking change
  • 📝 Documentation update
  • 🎨 UI/UX improvement
  • ️ Refactor
  • Performance improvement
  • 🧪 Test update
  • 🔧 Configuration change
  • 🚨 Security fix

Related Issues / References

  • Improves reliability of i18n module
  • Prevents regressions in multilingual features

Screenshots or Screen Recordings

before test coverage after test coverage for i18n


How to Set Up and Validate Locally

  1. Pull this branch:

    git checkout <branch-name>
  2. Install dependencies:

    npm install
  3. Run tests:

    npm run test
  4. Verify:

    • All tests pass
    • Coverage shows 100% for i18n module

Testing Done

  • Manual testing completed
  • Unit tests added

Test Cases Covered:

Scenario Expected Result Status
Language switching Updates language & persists
Invalid language fallback Falls back to English
Missing key handling Warning logged in DEV
RTL detection Correct boolean output
Interpolation formatting Correct transformation

Code Quality Checklist

Code Standards

  • Code follows project conventions
  • No console logs or unused code
  • No duplicate logic
  • TypeScript types properly defined
  • ESLint & Prettier passed

Testing

  • High-quality unit tests added
  • Edge cases covered
  • No flaky tests

Documentation

  • README updated (not required)
  • .env.example updated (not required)
  • CHANGELOG updated (optional)

Known Limitations / Technical Debt

  • Some tests rely on environment flags (import.meta.env.DEV), which may require careful handling in CI environments

Additional Notes

  • Achieved true 100% coverage, including:

    • Edge cases
    • Error scenarios
    • Fallback logic
  • Improves confidence in multilingual system stability

  • Prevents future regressions in i18n behavior


Edited by POORNA CHANDRA SAI TEJA KUMPATLA

Merge request reports

Loading