Bump Harbor versions and surface gateway mode in overview
All checks were successful
Build and Deploy Gateway / build-and-push (push) Successful in 15s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-07-13 20:32:59 +03:00
parent 56f5e408e3
commit f629309f32
7 changed files with 435 additions and 226 deletions

View File

@@ -9,7 +9,6 @@ import {
formatConnectionDurationWords,
isSubscriptionUrlValid,
localProxyUrls,
routePresentation,
subscriptionDomain,
subscriptionDaysLeft,
subscriptionUsage,
@@ -75,14 +74,6 @@ test('gateway proxy URLs use its network address', () => {
});
});
test('route copy distinguishes found, stale, lost, disabled and local states', () => {
assert.equal(routePresentation({ mode: 'gateway-direct', reason: 'gateway-found' }).title, 'Через Harbor Gateway');
assert.equal(routePresentation({ mode: 'gateway-direct', reason: 'gateway-stale' }).tone, 'stale');
assert.match(routePresentation({ mode: 'local-vpn', reason: 'gateway-lost' }).title, /Gateway недоступен/);
assert.match(routePresentation({ mode: 'local-vpn', reason: 'disabled' }).detail, /выключен/);
assert.equal(routePresentation({ mode: 'local-vpn', reason: 'local' }).title, 'Локальный VPN');
});
test('copy uses the synchronous native path available on gateway HTTP', async () => {
const textarea = {
style: {},

View File

@@ -94,7 +94,7 @@ test('tooltips stay opaque, above adjacent content, and do not stick after point
assert.match(styles, /\.client-tooltip-anchor:has\(> :focus-visible\) > \.client-tooltip/);
assert.doesNotMatch(styles, /\.client-tooltip-anchor:focus-within > \.client-tooltip/);
assert.match(rule('.harbor-version-tooltip'), /background:\s*oklch\(0\.14 0\.012 145\)/);
assert.doesNotMatch(component, /harbor-mode-tooltip|harbor-brand-control/);
assert.match(rule('.harbor-mode-tooltip'), /background:\s*oklch\(0\.14 0\.012 145\)/);
});
test('subscription validation waits for the provider and keeps diagnostics below errors', () => {

View File

@@ -69,13 +69,3 @@ test('copy feedback, drawers and Gateway tabs expose complete keyboard semantics
assert.match(styles, /@media \(max-width: 560px\)[\s\S]*\.client-copy-button \{[\s\S]*min-height: 44px/);
assert.match(styles, /@media \(max-width: 560px\)[\s\S]*\.client-local-rule-enabled,[\s\S]*\.client-local-rule-delete \{[\s\S]*width: 44px;[\s\S]*height: 44px/);
});
test('Connect route uses a labelled native Auto control instead of the logo', () => {
assert.match(component, /aria-label="Маршрут Connect"/);
assert.match(component, /type="checkbox"[\s\S]*checked={route\?\.autoEnabled !== false}/);
assert.match(component, /onChange={\(event\) => onSetGatewayAuto\(event\.target\.checked\)}/);
assert.match(component, /Использовать домашний Gateway автоматически/);
assert.doesNotMatch(component, /harbor-brand-control|:3456/);
assert.match(styles, /\.client-route-auto \{[\s\S]*min-height: 44px/);
assert.match(styles, /\.client-route-auto:has\(input:focus-visible\)/);
});