apple iap-submit: DEVELOPER_REJECTED IAP / subscription / group versions (left by a canceled submission) are submitted as they are, plan says 'add (developer rejected, re-submitted as is)', --new-version only for APPROVED / REJECTED, empty draft reused; fake ASC models cancel and re-add. play build / check: warn before Gradle when defaultConfig does not read -PversionCode / -PversionName, with the exact Groovy / Kotlin line (built with AGP 8.13); android.injected.version.code does not override bundleRelease; post-build versionCode mismatch is a hard stop. play-production-release plan: 'Do you want to restart your review?' dialog, Restart review is never-press. Pitfalls 31-33

This commit is contained in:
CRTkafa 2026-10-12 11:32:05 +08:00
parent 41d2ffcc24
commit 0b1451800c
18 changed files with 399 additions and 26 deletions

View file

@ -220,7 +220,11 @@ describe('the first production release: countries, managed publishing, the owner
test('release: Edit release, Next, Save; Publishing overview\'s Submit and Send changes for review are the owner\'s (a real click); the managed publishing warning', () => {
const p = consolePlan('play-production-release', base);
for (const b of ['Submit N changes for review', 'Send changes for review']) expect(p.buttons.neverPress).toContain(b);
for (const b of ['Submit N changes for review', 'Send changes for review', 'Restart review']) expect(p.buttons.neverPress).toContain(b);
// seen live: Submit while a review runs opens "Do you want to restart your review?" with "Restart review" (the owner's)
expect(p.steps.map(s => s.text).join('\n')).toContain('opens "Do you want to restart your review?" instead, with "Restart review"');
expect(p.uiFacts.some(f => f.includes('Do you want to restart your review?') && f.includes('agents never press Restart review'))).toBe(true);
expect(p.buttons.allowed.some(b => b.button === 'Cancel' && b.where.includes('restart your review'))).toBe(true);
expect(p.buttons.final).toBe('Send changes for review');
const text = p.steps.map(s => s.text).join('\n');
for (const f of ['Edit release', 'deobfuscation file is only a warning', 'Send N changes for review?', 'a JS .click() did nothing', 'goes live automatically once Google approves it']) expect(text).toContain(f);