Retry state conflicts and always render server picker
Build and Deploy Gateway / build-and-push (push) Successful in 25s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-08-19 00:36:39 +03:00
parent dc1fd76c44
commit 7cb25d0633
4 changed files with 27 additions and 10 deletions
@@ -35,6 +35,8 @@ test('App owns profile mutations and always uses the latest canonical revision',
assert.match(app, /api\.profiles\.add\(label, url, revisionRef\.current\)/);
assert.match(app, /api\.profiles\.refresh\(profileId, revisionRef\.current\)/);
assert.match(app, /api\.profiles\.forget\(profileId, mode, revisionRef\.current\)/);
assert.match(app, /safeError\.code === 'STATE_CONFLICT' && context !== 'routing'[\s\S]*await loadState\(\)[\s\S]*return await applyMutation\(action\)/);
assert.match(app, /safeError\.code === 'STATE_CONFLICT' \? '' : safeError\.correlationId/);
assert.match(page, /profiles,[\s\S]*onAdd: onAddProfile,[\s\S]*onRefresh: onRefreshProfile,[\s\S]*onForget: onForgetProfile/);
assert.doesNotMatch(page, /onRenameProfile/);
assert.doesNotMatch(feature, /from ['"][^'"]*\/api\/|\bapi\./);
@@ -113,7 +115,8 @@ test('profiles render as flat accordion groups with scoped controls', () => {
assert.match(feature, /\{!expired && visited && <div/);
assert.match(page, /const subscriptionError = error\?\.context === 'subscription'[\s\S]*profile\.id === error\.profileId[\s\S]*profile\.subscription\.errorCode === 'SUBSCRIPTION_EXPIRED'[\s\S]*error: subscriptionError/);
assert.match(feature, /profile\.subscription\.status === 'stale'[\s\S]*profile\.subscription\.fetchedAt/);
assert.match(feature, /\{!localStatus && renderServerPicker\(profile/);
assert.match(feature, /\{renderServerPicker\(profile/);
assert.doesNotMatch(feature, /!localStatus && renderServerPicker/);
assert.doesNotMatch(feature, /Выберите сервер этой подписки|client-profile-server-hint/);
assert.match(feature, /feature\.operations\.profileRefresh\?\.target === profile\.id/);
assert.match(feature, /\{!expired && visibleServer && <button[\s\S]*client-profile-selected-server[\s\S]*aria-expanded=\{expanded\}/);