From ef271652dfc95b50fec476dc329274783c84d13f Mon Sep 17 00:00:00 2001
From: Yvv
Date: Sat, 31 Oct 2026 00:11:13 +0100
Subject: [PATCH] =?UTF-8?q?v3=20:=20=C2=AB=20Voter=20en=20lot=20=C2=BB=20s?=
=?UTF-8?q?ur=20sa=20propre=20ligne,=20au-dessus=20des=20vues=20;=20C23=20?=
=?UTF-8?q?se=20donne=20le=20temps=20de=20la=20cha=C3=AEne?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-Authored-By: Claude Opus 5.5
---
web/e2e/vote.spec.ts | 4 ++++
.../routes/g/[group]/docs/[doc]/+page.svelte | 17 +++++++++++------
2 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/web/e2e/vote.spec.ts b/web/e2e/vote.spec.ts
index c8bacaa..decdaf3 100644
--- a/web/e2e/vote.spec.ts
+++ b/web/e2e/vote.spec.ts
@@ -85,10 +85,14 @@ test('C22 — le vote groupé : une section en un geste, et l’article à deux
});
test('C23 — le vote par la chaîne Ğ1 : un geste, confirmé par l’indexeur ; le dernier fait foi', async ({ page, browser }) => {
+ // The chain is waited for: the server reads the indexer every 10 seconds.
+ test.setTimeout(90_000);
await signIn(page, 'Chiara');
await wallet(page, [ALICE]);
await page.goto(DOC);
const { control } = await chain(page);
+ await expect(page.getByRole('button', { name: /^Voter en lot/ })).toBeVisible();
+ await shot(page, '0-entete-voter-en-lot');
// The basket: two articles in force, for, in one transaction.
await page.getByRole('button', { name: /^Voter en lot/ }).click();
const panel = page.locator('aside.panel');
diff --git a/web/src/routes/g/[group]/docs/[doc]/+page.svelte b/web/src/routes/g/[group]/docs/[doc]/+page.svelte
index 5868ea1..ea76c99 100644
--- a/web/src/routes/g/[group]/docs/[doc]/+page.svelte
+++ b/web/src/routes/g/[group]/docs/[doc]/+page.svelte
@@ -144,12 +144,14 @@
·
-
- {#if canVote}
+ {#if canVote}
+
- {/if}
+
+ {/if}
+
{#each VIEWS as v (v)}
@@ -306,10 +308,13 @@
justify-content: space-between;
margin-top: 1.6rem;
}
+ .basket-row {
+ margin-top: 1.4rem;
+ }
+ .basket-row + .controls {
+ margin-top: 0.8rem;
+ }
.basket-btn {
- flex-basis: 100%;
- justify-self: start;
- max-width: max-content;
background: var(--water);
color: var(--on-water);
}