Handle rejected subscriptions and add local client compose
This commit is contained in:
@@ -9,6 +9,7 @@ import {
|
||||
formatConnectionDurationWords,
|
||||
isSubscriptionUrlValid,
|
||||
localProxyUrls,
|
||||
routePresentation,
|
||||
subscriptionDomain,
|
||||
subscriptionDaysLeft,
|
||||
subscriptionUsage,
|
||||
@@ -74,6 +75,14 @@ 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: {},
|
||||
|
||||
@@ -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.match(rule('.harbor-mode-tooltip'), /background:\s*oklch\(0\.14 0\.012 145\)/);
|
||||
assert.doesNotMatch(component, /harbor-mode-tooltip|harbor-brand-control/);
|
||||
});
|
||||
|
||||
test('subscription validation waits for the provider and keeps diagnostics below errors', () => {
|
||||
|
||||
@@ -69,3 +69,13 @@ 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\)/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user