From 2bf200404f6b247bc21d1e62a3bc09603fb5e49e Mon Sep 17 00:00:00 2001 From: dcarnicer Date: Tue, 30 Jun 2026 17:33:13 +0200 Subject: [PATCH] fix: make LWC unit tests pass on a clean checkout Two independent issues caused 5 of 7 Jest suites to fail: 1. c/* imports for components under PackageComponents/lwc did not resolve, because sfdx-project.json only declares force-app as a packageDirectory and the sfdx-lwc-jest resolver derives module paths from it. Added a moduleNameMapper for the c/ namespace. 2. The lscMobileInline_SimpleWidget test mocked lightning/barcodeScanner, but the component imports getBarcodeScanner from lightning/mobileCapabilities. Corrected the mock target. Result: 7 suites / 29 tests pass. Fixes #38 --- .../__tests__/lscMobileInline_SimpleWidget.test.js | 11 +++++++---- jest.config.js | 8 +++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/PackageComponents/lwc/lscMobileInline_SimpleWidget/__tests__/lscMobileInline_SimpleWidget.test.js b/PackageComponents/lwc/lscMobileInline_SimpleWidget/__tests__/lscMobileInline_SimpleWidget.test.js index 38b99ea..edaf738 100644 --- a/PackageComponents/lwc/lscMobileInline_SimpleWidget/__tests__/lscMobileInline_SimpleWidget.test.js +++ b/PackageComponents/lwc/lscMobileInline_SimpleWidget/__tests__/lscMobileInline_SimpleWidget.test.js @@ -1,11 +1,14 @@ import { createElement } from '@lwc/engine-dom'; import LscMobileInline_SimpleWidget from 'c/lscMobileInline_SimpleWidget'; -// Mock the lightning/barcodeScanner module -jest.mock('lightning/barcodeScanner', () => { +// Mock the lightning/mobileCapabilities module (the component imports getBarcodeScanner from it) +jest.mock('lightning/mobileCapabilities', () => { return { - scan: jest.fn().mockImplementation(() => Promise.resolve({ value: '12345' })), - BarcodeScanner: jest.fn() + getBarcodeScanner: jest.fn().mockImplementation(() => ({ + isAvailable: jest.fn().mockReturnValue(false), + beginCapture: jest.fn().mockImplementation(() => Promise.resolve({ value: '12345' })), + endCapture: jest.fn() + })) }; }, { virtual: true }); diff --git a/jest.config.js b/jest.config.js index f5a9fed..42def83 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,5 +2,11 @@ const { jestConfig } = require('@salesforce/sfdx-lwc-jest/config'); module.exports = { ...jestConfig, - modulePathIgnorePatterns: ['/.localdevserver'] + modulePathIgnorePatterns: ['/.localdevserver'], + // Components live under PackageComponents/lwc, which is not a sfdx-project.json + // packageDirectory, so the default resolver can't map `c/*` imports to them. + moduleNameMapper: { + ...(jestConfig.moduleNameMapper || {}), + '^c/(.+)$': '/PackageComponents/lwc/$1/$1' + } };