Files
legion_kk/tests/unit/tutorial-highlight.test.ts
self 0e97e9ef33 feat: manage Tribes admins from settings
Replace the old profile-era settings flow with online human-admin CRUD backed by the Tribes admin API.

Derive the first-admin tutorial step from transient live admin state and remove ACME email plumbing from Legion deployment inputs.
2026-06-26 20:47:43 +02:00

107 lines
3.0 KiB
TypeScript

import assert from "node:assert/strict"
import test from "node:test"
import {
selectTutorialHighlightRule,
type TutorialHighlightRule
} from "../../src/renderer/src/state/tutorial-highlight"
import type { TutorialStepId } from "../../src/renderer/src/state/tutorial"
function selectTarget(
step: TutorialStepId,
visibleSelectors: string[],
targetSelectors = visibleSelectors
): string | null {
const visible = new Set(visibleSelectors)
const targets = new Set(targetSelectors)
const rule: TutorialHighlightRule | null = selectTutorialHighlightRule(
step,
(selector) => visible.has(selector),
(selector) => targets.has(selector)
)
return rule?.target ?? null
}
test("provider tutorial highlights the next settings step from visible UI state", () => {
assert.equal(
selectTarget("providers", ['[data-tutorial-target="settings-button"]']),
'[data-tutorial-target="settings-button"]'
)
assert.equal(
selectTarget("providers", [
'[data-tutorial-surface="settings"]',
'[data-tutorial-target="settings-providers-tab"]'
]),
'[data-tutorial-target="settings-providers-tab"]'
)
assert.equal(
selectTarget("providers", [
'[data-tutorial-surface="settings"]',
'[data-tutorial-state="settings-providers-active"]',
'[data-tutorial-target="settings-provider-ovh"]'
]),
null
)
})
test("non-provider tutorials close settings before workspace actions", () => {
assert.equal(
selectTarget("server", [
'[data-tutorial-surface="settings"]',
'[data-tutorial-target="settings-close"]',
'[data-tutorial-target="add-server"]'
]),
'[data-tutorial-target="settings-close"]'
)
})
test("admin tutorial highlights the settings admin flow", () => {
assert.equal(
selectTarget("admins", ['[data-tutorial-target="settings-button"]']),
'[data-tutorial-target="settings-button"]'
)
assert.equal(
selectTarget("admins", [
'[data-tutorial-surface="settings"]',
'[data-tutorial-target="settings-admins-tab"]'
]),
'[data-tutorial-target="settings-admins-tab"]'
)
assert.equal(
selectTarget("admins", [
'[data-tutorial-surface="settings"]',
'[data-tutorial-state="settings-admins-active"]',
'[data-tutorial-target="create-human-admin"]'
]),
'[data-tutorial-target="create-human-admin"]'
)
})
test("workspace tutorials fall back from missing action targets to navigation", () => {
assert.equal(
selectTarget("server", ['[data-tutorial-target="workspace-tab-instances"]']),
'[data-tutorial-target="workspace-tab-instances"]'
)
assert.equal(
selectTarget("dns-zone", [
'[data-tutorial-state="workspace-instances-active"]',
'[data-tutorial-target="add-zone"]'
]),
'[data-tutorial-target="add-zone"]'
)
assert.equal(
selectTarget("domain", [
'[data-tutorial-surface="domain-dialog"]',
'[data-tutorial-target="save-domain"]'
]),
'[data-tutorial-target="save-domain"]'
)
})