fix(beacon): beskeden skubber i stedet for at dække
Den lå som en rude i hjørnet, oven på arbejdet, og dækkede knapperne i notens fod og i delepanelet — seks e2e-prøver klikkede forgæves på noget, der lå under den. Det var ikke kun et prøveproblem. En besked, der er i vejen, bliver klikket væk uden at blive læst, og så er den uopfordrede oplysning en formalitet frem for noget, nogen har set. Nu står den øverst i indholdet og skubber siden ned, indtil den bliver besvaret. Og e2e beviser den nu frem for at klikke den væk: den første konto skal møde beskeden, og der skal stå et instance_id og en version i den. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0cf5c8c281
commit
96e1fa251b
@@ -28,5 +28,20 @@ setup('opret den første konto og log ind', async ({ page }) => {
|
||||
await expect(page.getByRole('navigation', { name: 'Hovedmenu' })).toBeVisible();
|
||||
await expect(page.getByRole('heading', { name: 'I dag' })).toBeVisible();
|
||||
|
||||
// Beaconet er slået til som udgangspunkt, og det bliver sagt uopfordret her —
|
||||
// det er hele grunden til, at et default-on er til at forsvare. Prøvet her,
|
||||
// fordi det er det eneste sted, en helt frisk installation bliver logget ind
|
||||
// på for første gang, og fordi beskeden ellers ville stå i vejen for hver
|
||||
// eneste prøve nedenfor og skulle klikkes væk uden at nogen havde set efter,
|
||||
// om den overhovedet sagde det rigtige.
|
||||
const notice = page.getByRole('region', { name: /melder, at den findes/ });
|
||||
await expect(notice).toBeVisible();
|
||||
// Værdierne står i beskeden, ikke ordet "anonymt": et løfte om telemetri er
|
||||
// præcis så meget værd som læserens mulighed for at efterprøve det.
|
||||
await expect(notice.getByText('instance_id')).toBeVisible();
|
||||
await expect(notice.getByText('version')).toBeVisible();
|
||||
await notice.getByRole('button', { name: 'Behold den' }).click();
|
||||
await expect(notice).toBeHidden();
|
||||
|
||||
await page.context().storageState({ path: AUTH_FILE });
|
||||
});
|
||||
|
||||
@@ -88,15 +88,13 @@
|
||||
{/if}
|
||||
|
||||
<style>
|
||||
/* Nederst i hjørnet, ikke hen over skærmen. Beskeden skal ses og besvares —
|
||||
den skal ikke tages som en fejl eller som noget, der spærrer for arbejdet,
|
||||
for så bliver den klikket væk uden at blive læst. */
|
||||
/* Øverst i indholdet, i flowet — ikke svævende over det. En rude, der ligger
|
||||
oven på arbejdet, dækker knapper, og en besked, der er i vejen, bliver
|
||||
klikket væk uden at blive læst. Den her skubber i stedet, står til den
|
||||
bliver besvaret, og forsvinder så for altid. */
|
||||
.notice {
|
||||
position: fixed;
|
||||
right: var(--s3);
|
||||
bottom: var(--s3);
|
||||
z-index: 60;
|
||||
width: min(24rem, calc(100vw - 2 * var(--s3)));
|
||||
margin: 0 0 var(--s3);
|
||||
max-width: 44rem;
|
||||
padding: var(--s3);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius-lg, var(--radius));
|
||||
|
||||
@@ -193,6 +193,13 @@
|
||||
</header>
|
||||
|
||||
<div class="content">
|
||||
<!-- Sagt uopfordret, første gang en administrator er logget ind: hvad
|
||||
denne installation melder ind, og hvordan man siger nej.
|
||||
Øverst i indholdet og ikke svævende over det — en rude, der
|
||||
ligger oven på arbejdet, dækker knapper, og en besked, der er i
|
||||
vejen, bliver klikket væk uden at blive læst. Komponenten tegner
|
||||
ingenting, når der ikke er noget at fortælle. -->
|
||||
<BeaconNotice />
|
||||
{@render children()}
|
||||
</div>
|
||||
</main>
|
||||
@@ -209,11 +216,6 @@
|
||||
|
||||
<CommandPalette bind:open={paletteOpen} />
|
||||
|
||||
<!-- Sagt uopfordret, første gang en administrator er logget ind: hvad denne
|
||||
installation melder ind, og hvordan man siger nej. Komponenten tegner
|
||||
ingenting, når der ikke er noget at fortælle. -->
|
||||
<BeaconNotice />
|
||||
|
||||
<!-- Mounted here rather than in each view, so a task opens the same way from
|
||||
Today, a project, a label or a saved filter. -->
|
||||
{#if app.detailTask}
|
||||
|
||||
Reference in New Issue
Block a user