validate: removed-from-sale IAPs are no blockers; shots capture --device landscape (Mac / Chromebook frames from a web build); playwright lookup says why each place failed

This commit is contained in:
CRTkafa 2026-11-03 23:14:34 +07:00
parent cdd9321794
commit d0f568ebc2
13 changed files with 230 additions and 48 deletions

View file

@ -290,6 +290,15 @@ describe('validate rules', () => {
expect(f.find(x => x.code === 'availability')!.fix).toContain('Pricing and Availability');
expect(f.findIndex(x => x.level === 'ok')).toBeGreaterThan(f.findLastIndex(x => x.level === 'blocker'));
});
test('apple: products removed from sale are not blockers, unless the config still sells them', () => {
const s = appleOk();
s.iaps = [...s.iaps, { productId: 'old1', state: 'DEVELOPER_REMOVED_FROM_SALE', reviewScreenshot: false }, { productId: 'old2', state: 'REMOVED_FROM_SALE', reviewScreenshot: false }];
expect(appleRules(s).filter(f => f.level !== 'ok')).toEqual([]);
expect(appleRules(s).find(f => f.code === 'iap')!.msg).toBe('1 in-app purchases ready (2 removed from sale, not checked)');
s.expectedProducts = ['p1', 'old1'];
const f = appleRules(s).find(x => x.code === 'iap')!;
expect([f.level, f.msg]).toEqual(['warn', 'old1: DEVELOPER_REMOVED_FROM_SALE, but the config still sells it']);
});
test('apple: non-exempt needs an approved declaration', () => {
const s = appleOk();
s.build = { ...s.build!, usesNonExemptEncryption: true, declarationState: 'IN_REVIEW' };