However, I had already started working on these changes yesterday. Therefore, I would expect a previous successful license check to still be cached and valid.
It would be really helpful if the open-source license check provided some information about why the open source license check failed
In that case, a previously successful open-source license check could potentially remain valid.
π
Diagnostics report from when the issue occurred. (β οΈ It looks way too small)
{
editorVersion: '1.134.0',
pluginVersion: '1.0.500',
editorType: 'VSCode',
osVersion: 'linux 4.4.0-19041-Microsoft',
nodeVersion: 'v22.14.0',
coreVersion: { version: '1.0.2067', pinned: undefined },
pnp: '<not set>',
pnpEsm: '<not set>',
checksum: 'MDc0ZjljMGNkMTEwNThiYTM5Y2FiNzY3YWE1YmQ1YjksMTc4NzYxNjAwMDAwMCww',
config: {
diagnostics: {
jest: {
config: {
configs: [
{
automock: false,
cache: true,
cacheDirectory: '/tmp/jest_rs',
clearMocks: false,
collectCoverageFrom: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
coverageDirectory: '<rootDir>/coverage',
coveragePathIgnorePatterns: [ '/node_modules/', '/dist/', '/coverage/', '/vendor/', '\\.d\\.ts$' ],
cwd: '<rootDir>',
dependencyExtractor: undefined,
detectLeaks: false,
detectOpenHandles: false,
displayName: undefined,
errorOnDeprecated: false,
extensionsToTreatAsEsm: [],
fakeTimers: { enableGlobally: false },
filter: undefined,
forceCoverageMatch: [],
globalSetup: undefined,
globalTeardown: undefined,
globals: {},
haste: { computeSha1: false, enableSymlinks: false, forceNodeFilesystemAPI: true, throwOnModuleCollision: false },
id: 'abc2714e2ac69c2f2f27f6d4e6c8944c',
injectGlobals: true,
moduleDirectories: [ 'node_modules' ],
moduleFileExtensions: [
'js', 'mjs',
'cjs', 'jsx',
'ts', 'tsx',
'json', 'node'
],
moduleNameMapper: [
[ '^image![a-zA-Z0-9$_-]+$', 'GlobalImageStub' ],
[ '^[./a-zA-Z0-9$_-]+\\.png$', '<rootDir>/RelativeImageStub.js' ],
[ 'module_name_(.*)', '<rootDir>/substituted_module_$1.js' ],
[ 'assets/(.*)', [ '<rootDir>/images/$1', '<rootDir>/photos/$1', '<rootDir>/recipes/$1' ] ]
],
modulePathIgnorePatterns: [],
modulePaths: undefined,
openHandlesTimeout: 1000,
prettierPath: 'prettier',
resetMocks: false,
resetModules: false,
resolver: undefined,
restoreMocks: false,
rootDir: '<rootDir>',
roots: [ '<rootDir>' ],
runner: '<rootDir>/node_modules/jest-runner/build/index.js',
runtime: undefined,
sandboxInjectedGlobals: [],
setupFiles: [],
setupFilesAfterEnv: [],
skipFilter: false,
skipNodeResolution: undefined,
slowTestThreshold: 5,
snapshotFormat: { escapeString: false, printBasicPrototype: false },
snapshotResolver: undefined,
snapshotSerializers: [],
testEnvironment: '<rootDir>/node_modules/jest-environment-jsdom/build/index.js',
testEnvironmentOptions: {},
testLocationInResults: false,
testMatch: [ '**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)' ],
testPathIgnorePatterns: [ '/node_modules/' ],
testRegex: [],
testRunner: '<rootDir>/node_modules/jest-circus/runner.js',
transform: [ [ '^.+\\.tsx?$', '<rootDir>/node_modules/ts-jest/dist/index.js', { tsconfig: 'tsconfig.json', esModuleInterop: true } ] ],
transformIgnorePatterns: [ '/node_modules/', '\\.pnp\\.[^\\/]+$' ],
unmockedModulePathPatterns: undefined,
watchPathIgnorePatterns: []
}
],
globalConfig: {
bail: 0,
changedFilesWithAncestor: false,
changedSince: undefined,
ci: false,
collectCoverage: true,
collectCoverageFrom: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
coverageDirectory: '<rootDir>/coverage',
coverageProvider: 'babel',
coverageReporters: [ 'json', 'json-summary', 'lcov', 'text' ],
coverageThreshold: undefined,
detectLeaks: false,
detectOpenHandles: false,
errorOnDeprecated: false,
expand: false,
filter: undefined,
findRelatedTests: false,
forceExit: false,
globalSetup: undefined,
globalTeardown: undefined,
json: false,
lastCommit: false,
listTests: false,
logHeapUsage: false,
maxConcurrency: 5,
maxWorkers: 7,
noSCM: undefined,
noStackTrace: false,
nonFlagArgs: undefined,
notify: false,
notifyMode: 'failure-change',
onlyChanged: false,
onlyFailures: false,
openHandlesTimeout: 1000,
outputFile: undefined,
passWithNoTests: false,
projects: [],
randomize: undefined,
replname: undefined,
reporters: undefined,
rootDir: '<rootDir>',
runInBand: undefined,
runTestsByPath: false,
seed: -162092994,
shard: undefined,
showSeed: undefined,
silent: undefined,
skipFilter: false,
snapshotFormat: { escapeString: false, printBasicPrototype: false },
testFailureExitCode: 1,
testNamePattern: undefined,
testPathPattern: '',
testResultsProcessor: undefined,
testSequencer: '<rootDir>/node_modules/@jest/test-sequencer/build/index.js',
testTimeout: undefined,
updateSnapshot: 'new',
useStderr: false,
verbose: undefined,
watch: false,
watchAll: false,
watchPlugins: undefined,
watchman: true,
workerIdleMemoryLimit: undefined,
workerThreads: false
},
hasDeprecationWarnings: false,
wallaby: {
roots: [],
watchPathIgnorePatterns: [ '/node_modules/', '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/', '\\.watchman-cookie', '/tmp/jest_rs', '\\./coverage' ],
testPathIgnorePatterns: [ '/node_modules/', '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/', '\\.watchman-cookie', '/tmp/jest_rs', '\\./coverage' ],
testMatch: [ '**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)' ],
testRegex: []
}
}
}
},
testFramework: 'jest',
filesWithCoverageCalculated: [ 'src/**/*.{ts,tsx}', '!**/node_modules/**', '!**/dist/**', '!**/coverage/**', '!**/vendor/**' ],
filesWithNoCoverageCalculated: [ /\/dist\//, /\/coverage\//, /\/vendor\//, /\.d\.ts$/ ],
globalSetup: false,
dot: true,
files: [
{ pattern: '/node_modules/', regexp: /\/node_modules\//, ignore: true, trigger: true, load: true, file: true, test: true },
{
pattern: '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/',
regexp: /\.\/dist\/|\.\/build\/|\.\/coverage\/|\.\/git\/|\.\/worktrees\/|\/\..+\//,
ignore: true,
trigger: true,
load: true,
file: true,
test: true
},
{ pattern: '\\.watchman-cookie', regexp: /\.watchman-cookie/, ignore: true, trigger: true, load: true, file: true, test: true },
{ pattern: '/tmp/jest_rs', regexp: /\/tmp\/jest_rs/, ignore: true, trigger: true, load: true, file: true, test: true },
{ pattern: '\\./coverage', regexp: /\.\/coverage/, ignore: true, trigger: true, load: true, file: true, test: true },
{ pattern: '**/**', ignore: false, trigger: true, load: true, order: 1 },
{ pattern: '**/__tests__/**/*.[jt]s?(x)', ignore: true, trigger: true, load: true, file: true },
{ pattern: '**/?(*.)+(spec|test).[tj]s?(x)', ignore: true, trigger: true, load: true, file: true }
],
captureConsoleLog: true,
tests: [
{ pattern: '/node_modules/', regexp: /\/node_modules\//, ignore: true, trigger: true, load: true, test: true, file: false },
{
pattern: '\\./dist/|\\./build/|\\./coverage/|\\./git/|\\./worktrees/|/\\..+/',
regexp: /\.\/dist\/|\.\/build\/|\.\/coverage\/|\.\/git\/|\.\/worktrees\/|\/\..+\//,
ignore: true,
trigger: true,
load: true,
test: true,
file: false
},
{ pattern: '\\.watchman-cookie', regexp: /\.watchman-cookie/, ignore: true, trigger: true, load: true, test: true, file: false },
{ pattern: '/tmp/jest_rs', regexp: /\/tmp\/jest_rs/, ignore: true, trigger: true, load: true, test: true, file: false },
{ pattern: '\\./coverage', regexp: /\.\/coverage/, ignore: true, trigger: true, load: true, test: true, file: false },
{ pattern: '**/__tests__/**/*.[jt]s?(x)', ignore: false, trigger: true, load: true, test: true, order: 2 },
{ pattern: '**/?(*.)+(spec|test).[tj]s?(x)', ignore: false, trigger: true, load: true, test: true, order: 3 }
],
runAllTestsInAffectedTestFile: false,
updateNoMoreThanOneSnapshotPerTestFileRun: false,
compilers: {},
logLimits: { inline: { depth: 5, elements: 5000 }, values: { default: { stringLength: 8192 }, autoExpand: { elements: 5000, stringLength: 8192, depth: 10 } } },
preprocessors: {},
maxConsoleMessagesPerTest: 500,
maxTraceSteps: 999999,
maxTraceStepsForWatchExpressionPrefetch: 10,
autoConsoleLog: true,
delays: { run: 0, edit: 100, update: 0 },
workers: { initial: 0, regular: 0, recycle: false },
teardown: undefined,
hints: {
ignoreCoverage: '__REGEXP /ignore coverage|istanbul ignore|c8 ignore/',
ignoreCoverageForFile: '__REGEXP /ignore file coverage/',
commentAutoLog: '?',
testFileSelection: { include: '__REGEXP /file\\.only/', exclude: '__REGEXP /file\\.skip/' }
},
automaticTestFileSelection: true,
runSelectedTestsOnly: false,
mapConsoleMessagesStackTrace: false,
extensions: {},
env: {
type: 'node',
kind: undefined,
params: {},
runner: '<homeDir>/.nvm/versions/node/v22.14.0/bin/node',
runnerReason: 'ambient',
runnerReasonSource: '',
viewportSize: { width: 800, height: 600 },
options: { width: 800, height: 600 },
bundle: true
},
reportUnhandledPromises: true,
slowTestThreshold: 75,
lowCoverageThreshold: 80,
runAllTestsWhenNoAffectedTests: false,
allowedToStreamResults: true,
allowedToCacheResults: true,
configCode: 'auto.detect#-775868654',
_internalIntegrationVersion: '24.8.0'
},
packageJSON: {
dependencies: { '@robert.tools/fs': '^1.0.0', '@robert.tools/log': '^1.0.0' },
devDependencies: {
'@eslint/js': '^10.0.1',
'@types/jest': '^29.5.3',
'@types/mock-fs': '^4.13.4',
'@types/node': '^24.10.0',
'@typescript-eslint/eslint-plugin': '^8.62.0',
eslint: '^10.4.1',
'eslint-config-prettier': '^10.1.8',
'eslint-plugin-prettier': '^5.5.6',
globals: '^17.6.0',
jest: '^29.6.2',
'jest-environment-jsdom': '^29.6.2',
'mock-fs': '^5.5.0',
'node-html-parser': '^7.0.1',
'ts-jest': '^29.4.11',
tsx: '^4.22.3',
typescript: '^5.9.3'
}
},
fs: { numberOfFiles: 16 },
debug: [
"2026-08-21T08:57:35.492Z host WebSocket server is listening on { address: '127.0.0.1', family: 'IPv4', port: 58283 }\n",
'2026-08-21T08:57:35.537Z project waiting for initial run signal\n',
'2026-08-21T08:57:35.542Z model Initialization Completed: 256ms\n',
'2026-08-21T08:57:35.622Z extended-core Validating Open Source License\n',
"2026-08-21T08:57:35.624Z extended-core Remotes: [ 'https://github.com/willi84/backend/' ]\n",
'2026-08-21T08:57:35.624Z extended-core License refresh required: true undefined\n',
'2026-08-21T08:57:35.624Z extended-core Wallaby.js is validating the open-source status of your project.\n',
'2026-08-21T08:57:35.655Z ui.service Starting UI service on port: 55000\n',
'2026-08-21T08:57:35.657Z ui.service UI service started on port: 55000\n',
'2026-08-21T08:57:36.237Z config Attempting automatic configuration for angular\n',
'2026-08-21T08:57:36.239Z angular/cli config Angular CLI not found.\n',
'2026-08-21T08:57:36.239Z config Finished attempting automatic configuration for angular (3ms)\n',
'2026-08-21T08:57:36.239Z config Attempting automatic configuration for jest\n',
'2026-08-21T08:57:36.493Z jest/config Detected Jest.\n',
'2026-08-21T08:57:36.494Z jest/config Configured Jest.\n',
'2026-08-21T08:57:36.494Z config Finished attempting automatic configuration for jest (255ms)\n',
'2026-08-21T08:57:36.495Z config Using node.js runner from ambient environment: <homeDir>/.nvm/versions/node/v22.14.0/bin/node\n',
'2026-08-21T08:57:36.495Z project Wallaby Node version: v22.14.0\n',
'2026-08-21T08:57:36.495Z project Wallaby config: <rootDir>/auto.detect\n',
'2026-08-21T08:57:36.509Z fs File system starting\n',
'2026-08-21T08:57:36.562Z fs File system scan completed\n',
'2026-08-21T08:57:36.571Z project File cache: <homeDir>/.wallaby/cache/projects/40579ba14577b375\n',
'2026-08-21T08:57:36.573Z project package.json file change detected, invalidating local cache\n',
'2026-08-21T08:57:36.609Z workers Parallelism for initial run: 6, for regular run: 3\n',
'2026-08-21T08:57:36.610Z workers Web server is listening at 58294\n',
'2026-08-21T08:57:36.610Z project File cache requires some updates, waiting required files\n',
'2026-08-21T08:57:36.622Z project Stopping process pool\n',
'2026-08-21T08:57:36.624Z runManager Test run started; run priority: 3\n',
'2026-08-21T08:57:36.626Z runManager Running all tests\n',
'2026-08-21T08:57:36.629Z workers Planning to run 1 queued test file(s) (full run)\n',
'2026-08-21T08:57:36.630Z workers [worker #0] New run (tier 2, regular, no group): 1 test files, time estimate 0 ms\n',
'2026-08-21T08:57:36.631Z workers Starting run worker instance #0\n',
'2026-08-21T08:57:36.631Z nodeRunner Starting sandbox [worker #0, session #enj6u]\n',
'2026-08-21T08:57:36.632Z nodeRunner Preparing sandbox [worker #0, session #enj6u]\n',
'2026-08-21T08:57:36.811Z workers Started run worker instance (delayed) #0\n',
'2026-08-21T08:57:36.811Z nodeRunner Prepared sandbox [worker #0, session #enj6u]\n',
'2026-08-21T08:57:36.811Z workers [worker #0, session #enj6u] Running tests in sandbox\n',
'2026-08-21T08:57:36.813Z nodeRunner Sending worker task [worker #0, session #enj6u]\n',
"2026-08-21T08:57:36.818Z workers 'Configuring Jest (enj6u)'\n",
"2026-08-21T08:57:36.964Z workers 'Getting Jest test data (enj6u)'\n",
"2026-08-21T08:58:24.467Z workers 'Scheduling Jest Test Run (enj6u): 2026-08-21T08:58:24.461Z'\n",
'2026-08-21T08:58:33.373Z workers [enj6u] Loaded unknown number of test(s)\n',
'2026-08-21T08:58:33.415Z workers [enj6u] Test executed: should generated the index file\n',
'2026-08-21T08:58:33.427Z workers [enj6u] Test executed: should overwrite the index file\n',
'2026-08-21T08:58:33.461Z workers [enj6u] Run 2 test(s), skipped 0 test(s)\n',
"2026-08-21T08:58:33.469Z workers 'Jest Test Run Complete (enj6u): 2026-08-21T08:58:33.467Z'\n",
'2026-08-21T08:58:33.469Z workers [enj6u] Sandbox is responsive, closing it\n',
'2026-08-21T08:58:33.472Z workers No queued test files to run\n',
'2026-08-21T08:58:33.475Z workers Processing buffered results (idle), buffer size: 1, buffer time: 0ms\n',
'2026-08-21T08:58:33.479Z workers Handling first result of full run\n',
'2026-08-21T08:58:33.479Z runManager Test run finished\n',
'2026-08-21T08:58:33.482Z project Processed console.log entries\n',
'2026-08-21T08:58:33.483Z project Processed loading sequences\n',
'2026-08-21T08:58:33.484Z project Processed executed tests\n',
'2026-08-21T08:58:33.487Z project Processed code coverage\n',
'2026-08-21T08:58:33.562Z runManager Test run result processed and sent to IDE\n'
]
}
π Issue description or question
It's still a problem that it's not clear why Wallaby is not starting after failed Open Source License Check.
As @smcenlly suggested here, I created a new ticket for this issue.
π Reproduction / Discoveries
π Yesterday, I continued working on a project where the last commit was from July 19th.
π Today, I wanted to write tests for the project, so I tried to start Wallaby to see which tests were still failing.
π Things I tried
β None of these steps helped.
π’ What finally made it work
I then:
After that, the license check worked again and Wallaby started. π
π Possible cause
My assumption is that Wallaby locally calculates or checks the date of the last remote change, detects that there are local changes, and then considers the large difference in days when performing the open-source license check.
However, I had already started working on these changes yesterday. Therefore, I would expect a previous successful license check to still be cached and valid.
π‘ Suggestion
It would be really helpful if the open-source license check provided some information about why the open source license check failed
It might also make sense to consider whether:
In that case, a previously successful open-source license check could potentially remain valid.
π Wallaby diagnostics report
π Diagnostics report from when the issue occurred. (β οΈ It looks way too small)
π after solving with a minimal commit (and tried updating everything)