diff --git a/server/services/previewDeploy.js b/server/services/previewDeploy.js index 472a177..e3698b9 100644 --- a/server/services/previewDeploy.js +++ b/server/services/previewDeploy.js @@ -661,7 +661,7 @@ async function followRun({ repoFullName, project, token, runId, subdomain, job, } if (run.result === 'dev') { await patchProject(repoFullName, project, { ...base, previewState: 'sleeping' }) - try { await runnerClient.startDev(subdomain, job) } catch (err) { + try { await runnerClient.startDev(subdomain, { ...job, mode: 'dev' }) } catch (err) { console.error('[previewDeploy] Dev-Registrierung fehlgeschlagen:', err.message) } } else { diff --git a/test/previewFinalFixes.test.js b/test/previewFinalFixes.test.js index f139bbb..8f0c398 100644 --- a/test/previewFinalFixes.test.js +++ b/test/previewFinalFixes.test.js @@ -241,3 +241,23 @@ test('Abgleich: Runner nicht erreichbar / Schalter aus wirft nie und ändert nic config.previewRunner.enabled = false assert.deepEqual(await rec.reconcilePreviews(), { skipped: true }) }) + +// ---- R19 ---- +test('R19: Verfolger meldet dev immer mit mode dev; registerDevRound liefert identischen Auftrag', async () => { + const { createDocument } = await import('../server/services/appwriteAdmin.js') + const envLib = await import('../server/services/previewEnv.js') + const doc = await createDocument('websiteProjects', { + repoFullName: 'WEBklar/r19', projectName: 'R', subdomain: 'r19', previewMode: 'auto', + previewEnv: envLib.encryptEnv({ K: 'wert1234' }, key), + }, 'r19') + rs.script = done({ result: 'dev', detected: { kind: 'build', pm: 'npm' } }) + await pd.runDeploy('WEBklar/r19', 'main', { subdomain: 'r19', type: 'static', branch: 'main' }, { project: doc, sha: SHA }) + await pd.waitForRunFollowers() + assert.equal(rs.calls.find((c) => c.method === 'POST' && c.url === '/jobs/build').body.mode, 'auto') + const first = rs.calls.find((c) => c.method === 'PUT' && c.url === '/dev/r19').body + assert.equal(first.mode, 'dev') + rs.calls = [] + await pd.registerDevRound([aw.get('websiteProjects', 'r19')]) + const second = rs.calls.find((c) => c.method === 'PUT' && c.url === '/dev/r19').body + assert.deepEqual(second, first) +})