Skip to content

QVAC-18064 feat: optimize nmtcpp for Android GPU inference#1875

Merged
iancris merged 10 commits into
mainfrom
feat/QVAC-18064-optimize-nmtcpp-for-android-gpu
May 4, 2026
Merged

QVAC-18064 feat: optimize nmtcpp for Android GPU inference#1875
iancris merged 10 commits into
mainfrom
feat/QVAC-18064-optimize-nmtcpp-for-android-gpu

Conversation

@iancris

@iancris iancris commented May 4, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Deduplicate same-physical-GPU backends in both C++ (nmt_backend_init) and JS (discoverGpuDevices): Vulkan0 + OpenCL0 on single-SoC Android devices now resolve to one backend instead of redundant scheduler splits that add sync overhead without parallel-compute benefit.
  • Load GGML backends only once (g_backendsLoaded guard in NmtLazyInitializeBackend) to avoid redundant dlopen/registration when multiple model instances are created in the same process.
  • Add op_offload_min_batch config propagated via GGML_VK_OFFLOAD_MIN_BATCH env var, allowing callers to force single-token decoder steps onto GPU (Vulkan default of 32 keeps them on CPU).
  • Cap Android CPU thread count to 4 in get_optimal_thread_count() to stay on performance cores (big.LITTLE SoCs spread across all 8 cores, hitting slow efficiency cores).
  • KV cache padding: return 32 for Vulkan when use_gpu && flash_attn (was returning 1 for all non-Metal/CUDA backends), fixing flash-attention alignment on Adreno/Mali. CPU sessions still get padding=1 via the early-return guard.
  • Beam search KV cache: move beam-search KV pool to CPU backend via backends.back() (CPU is always last in the vector) instead of backends[0] (GPU when present). CPU allocation avoids contention with the main GPU inference pipeline on single-GPU mobile SoCs.
  • New getActiveBackendDescription() API exposed through JS/TS — returns human-readable device description (e.g. "Qualcomm Adreno (TM) 830") for perf-report tagging.
  • discoverGpuBackends() test helper for Vulkan-vs-OpenCL comparison benchmarks (OpenCL test currently skipped due to upstream Adreno 830 M%4 assertion).
  • C++ naming cleanup: nmt_select_gpu_devicenmtSelectGpuDevice, nmt_name_contains_cinmtNameContainsCi to satisfy clang-tidy readability-identifier-naming.
  • Mode 2b OpenCL filtering: always skip OpenCL devices in the fallback path (not just when USE_OPENCL is off), so gpuDevice ordinals map to distinct physical GPUs without OpenCL duplicates occupying slots.
  • Null-guard ggml_backend_reg_get_proc_address call to prevent crash when reg is null.
  • Test files updated to use deduplicated device arrays (index into devices[] by slot, not by d.index === gpuIdx), and include description in perf labels.

Test plan

  • Desktop: npm run test:integration in packages/qvac-lib-infer-nmtcpp (Bergamot, IndicTrans, pivot tests)
  • Desktop GPU: verify single GPU device discovered, no duplicate rows in perf report
  • Android Device Farm: IndicTrans GPU test uses Vulkan without redundant OpenCL backend init
  • Verify getActiveBackendDescription() returns device string on GPU, empty string on CPU/unloaded
  • C++ lint: npm run test:cpp passes clang-tidy naming checks
  • CI: https://github.com/tetherto/qvac/actions/runs/25307072869

iancris and others added 2 commits May 4, 2026 02:09
Squashed commits:

- Optimize nmtcpp for Android GPU inference with Vulkan backend support
- Disable non-android CI jobs temporarily for isolated testing
- Bump qvac-fabric to 7248.2.5 for OpenCL Adreno M-padding fix
- Bump qvac-fabric to 7248.2.6 for Adreno q4_0 threshold fix
- Update vcpkg registry baseline for correct SHA512
- Move beam search KV cache pool to CPU backend
- Propagate config params after GGML context load and fix multi-GPU handling
- Disable OpenCL and revert to tetherto vcpkg registry
- Downgrade qvac-fabric to 7248.2.3 to match main branch registry
- Revert temporary CI workflow changes
- Add Android debug logging for Adreno 830 Vulkan crash investigation
- Prevent backend device accumulation and skip OpenCL comparison test
- Fix clang-format for ggml_backend_load_all_from_path call
- Remove Android debug logging added for Adreno 830 crash investigation

Co-authored-by: Cursor <cursoragent@cursor.com>
…errors

Rename new nmt_utils functions/params/locals to camelCase per project
readability-identifier-naming rules. Add NOLINT suppression for
pre-existing snake_case declarations. Fix implicit const char* -> bool
conversions to use explicit nullptr checks.
Security: bounded strnlen, clamp op_offload_min_batch, sanitize backend
description, atomic g_backendsLoaded.
Correctness: reset g_backendsLoaded on teardown, null physKey dedup,
remove unused selDevName.
Consistency: camelCase rename, JSDoc on silent catch, skip API for
disabled test, restore USE_OPENCL comment.
Race fix: first-writer-wins mutex for setenv GGML_VK_OFFLOAD_MIN_BATCH.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract sanitizePrintableAscii from anonymous namespaces in
TranslationModel.cpp and NmtLazyInitializeBackend.cpp into shared
nmt_utils.hpp/cpp. Consolidate duplicate JSDoc blocks on
getActiveBackendDescription in marian.js.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         148                50    66.22%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         502               208    58.57%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         134                28    79.10%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         243                31    87.24%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         534               159    70.22%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         769                96    87.52%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         477               125    73.79%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         177               132    25.42%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3442               902    73.79%         920               471    48.80%

Fix bergamot.cpp: rename snake_case locals/params, add explicit null
checks for implicit bool conversions, NOLINT for owning-memory,
narrowing conversions, deprecated u8path, and swappable params.
Concatenate nested namespaces in bergamot.hpp.

Fix TranslationModel.hpp: add explicit to single-arg ctor, use
= default for default ctor, override instead of virtual, remove
redundant access specifiers, NOLINT for special-member-functions,
sync processString param names.

Fix NOLINT placement in AddonJs.hpp, NmtLazyInitializeBackend.cpp,
and TranslationModel.cpp (moved to correct diagnostic lines).
Rename path_model to pathModel in nmt_loader definition.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         161                62    61.49%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         510               213    58.24%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         137                28    79.56%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         254                32    87.40%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         540               161    70.19%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         774                97    87.47%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         489               128    73.82%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         180               135    25.00%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3503               929    73.48%         920               471    48.80%

Move NOLINT comments to exact diagnostic lines, use NOLINTNEXTLINE
and NOLINTBEGIN/END for multi-line expressions that clang-format may
reflow. Fix bergamot.cpp u8path, owning-memory, narrowing, and
swappable-param suppressions. Fix NmtLazyInitializeBackend.cpp
cognitive complexity and pointer-arithmetic blocks. Use
[[maybe_unused]] for unused openclCacheDir parameter. Fix
nmt_beam_search.hpp nmt_context NOLINT, nmt_loader path_model rename.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         164                65    60.37%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         506               213    57.91%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         137                28    79.56%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         254                32    87.40%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         540               161    70.19%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         774                97    87.47%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         489               128    73.82%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         180               135    25.00%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3502               932    73.39%         920               471    48.80%

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

✅ E2E Mobile Test Results - iOS

Overall Status: PASSED
Device Farm Result: PASSED
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 3
✅ Passed 3
❌ Failed 0
⏭️ Skipped 0

Links

  • 🔗 Device Farm Run: View on AWS Device Farm
  • 🔗 Workflow: View Details
  • 📋 Run ARN: arn:aws:devicefarm:us-west-2:833707431398:run:cef7531e-44ed-4ddf-a349-a4b0f72f680d/f3e2f055-ebb7-4294-bf13-c6374bad1e4e

Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         157                58    63.06%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         506               213    57.91%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         137                28    79.56%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         254                32    87.40%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         540               161    70.19%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         774                97    87.47%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         489               128    73.82%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         180               135    25.00%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3495               925    73.53%         920               471    48.80%

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

✅ E2E Mobile Test Results - Android

Overall Status: PASSED
Device Farm Result: PASSED
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 6
✅ Passed 6
❌ Failed 0
⏭️ Skipped 0

Links

  • 🔗 Device Farm Run: View on AWS Device Farm
  • 🔗 Workflow: View Details
  • 📋 Run ARN: arn:aws:devicefarm:us-west-2:833707431398:run:cef7531e-44ed-4ddf-a349-a4b0f72f680d/4609b11c-7a1d-4edd-9b62-6a2942206c72

Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         157                58    63.06%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         506               213    57.91%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         137                28    79.56%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         254                32    87.40%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         540               161    70.19%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         774                97    87.47%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         489               128    73.82%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         180               135    25.00%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3495               925    73.53%         920               471    48.80%

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

✅ E2E Mobile Test Results - iOS

Overall Status: PASSED
Device Farm Result: PASSED
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 871eea2

Test Summary

Metric Count
Total Tests 3
✅ Passed 3
❌ Failed 0
⏭️ Skipped 0

Links

  • 🔗 Device Farm Run: View on AWS Device Farm
  • 🔗 Workflow: View Details
  • 📋 Run ARN: arn:aws:devicefarm:us-west-2:833707431398:run:cef7531e-44ed-4ddf-a349-a4b0f72f680d/47cb11de-c441-48f2-ae7a-d3501ff935bf

Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

✅ E2E Mobile Test Results - Android

Overall Status: PASSED
Device Farm Result: PASSED
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 871eea2

Test Summary

Metric Count
Total Tests 6
✅ Passed 6
❌ Failed 0
⏭️ Skipped 0

Links

  • 🔗 Device Farm Run: View on AWS Device Farm
  • 🔗 Workflow: View Details
  • 📋 Run ARN: arn:aws:devicefarm:us-west-2:833707431398:run:cef7531e-44ed-4ddf-a349-a4b0f72f680d/b6e352b8-bbab-4600-8285-11b05c9e845c

Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

Tier-based Approval Status

**PR Tier:** TIER1

**Current Status:** ✅ APPROVED

**Requirements:**
- 1 Team Member approval ✅ (1/1)
- 1 Team Lead OR Management approval ✅ (1/1)



---
*This comment is automatically updated when reviews change.*

@iancris

iancris commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

/review

@iancris

iancris commented May 4, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - iOS

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 0905567

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - Android

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 0905567

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented May 4, 2026

Copy link
Copy Markdown
Contributor

🧪 C++ Test Coverage Report

Coverage:

📊 Detailed Coverage
Filename                         Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover    Branches   Missed Branches     Cover
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
NmtLazyInitializeBackend.cpp          99                40    59.60%          11                 2    81.82%         157                58    63.06%          58                29    50.00%
NmtLazyInitializeBackend.hpp           2                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
TranslationModel.cpp                 296               168    43.24%          28                 8    71.43%         506               213    57.91%         152               106    30.26%
TranslationModel.hpp                   1                 0   100.00%           1                 0   100.00%           1                 0   100.00%           0                 0         -
nmt.cpp                               72                22    69.44%           9                 1    88.89%         137                28    79.56%          38                12    68.42%
nmt.hpp                               51                 4    92.16%          11                 2    81.82%          53                 4    92.45%          28                 0   100.00%
nmt_beam_search.cpp                  116                25    78.45%          10                 3    70.00%         254                32    87.40%          74                17    77.03%
nmt_graph_decoder.cpp                164                78    52.44%          15                 7    53.33%         540               161    70.19%         112                69    38.39%
nmt_graph_encoder.cpp                 54                13    75.93%           3                 0   100.00%         268                33    87.69%          36                15    58.33%
nmt_loader.cpp                       270                67    75.19%          14                 0   100.00%         774                97    87.47%         138                61    55.80%
nmt_state_backend.cpp                253                94    62.85%          21                 0   100.00%         489               128    73.82%         154                80    48.05%
nmt_tokenization.cpp                  88                21    76.14%           8                 0   100.00%         135                36    73.33%          58                25    56.90%
nmt_utils.cpp                        120                89    25.83%           8                 3    62.50%         180               135    25.00%          72                57    20.83%
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                               1586               621    60.84%         140                26    81.43%        3495               925    73.53%         920               471    48.80%

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - iOS

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - Android

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - iOS

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - Android

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 9f15af7

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - iOS

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: iOS
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 871eea2

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

@github-actions

github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

❌ E2E Mobile Test Results - Android

Overall Status: FAILED
Device Farm Result: UNKNOWN
Platform: Android
Addon: @qvac/translation-nmtcpp
PR: #1875
Commit: 871eea2

Test Summary

Metric Count
Total Tests 0
✅ Passed 0
❌ Failed 0
⏭️ Skipped 0

Links


Automated E2E mobile testing powered by AWS Device Farm
Tests located in: test/mobile/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants