case-header.spec.ts:287 — "the work tabs share one line at 1024, above the fold" — fails on the current suite, and it cannot be fixed in either place without someone deciding something. I fixed the other two failures in that file (#2011) and left this one alone deliberately.
The failure
Error: work-tab tops: 478.59375, 478.59375, 520.59375, 520.59375, 561.59375
Expected: 1 Received: 3
Five work tabs on three rows at a 1024px viewport.
Why this is not a test bug
The test's own comment states the requirement it is guarding:
Ten tabs wrapped onto three lines at 1440 and the strip fell below the fold at 1024, so the tabs a handler works in were the ones they could not see.
Relaxing the assertion would convert that back into an unobserved product gap. It is the one repair that must not happen here.
Why it is not a component bug either
The wrapping is .cn-tabs__nav in @conduction/nextcloud-vue's CnTabs, and it is deliberate, with its reasoning written beside it:
Wrap before scrolling. A horizontally scrolling strip hides tabs behind an edge with nothing to say they are there, and beside a #nav-end control the clipped tab reads as sitting UNDER the control. Wrapping keeps every tab reachable without a gesture.
That is a considered accessibility choice. Overriding it from one app — or changing it in a library all 21 apps share — to satisfy one spec would trade a real property for a green test.
So the two requirements have diverged
- nc-vue: every tab reachable without a gesture, therefore wrap.
- dossiq A33: the work tabs on one line, above the fold at 1024, therefore do not wrap.
Both are right on their own terms. They are jointly unsatisfiable at nine tabs and this label length on a 1024px viewport. The case header now carries five work tabs plus four conditional ones.
The decision someone owns
- Fewer tabs at laptop width — collapse the four conditional tabs behind an overflow control, so the five work tabs keep their line.
- Shorter labels — the current set is Data, Documents, Parties, Tasks, Communication plus four more; narrower labels may fit one line.
- Accept wrapping and re-state A33 — if two rows above the fold is acceptable, the assertion should say that, and say why it changed.
- A scrolling strip with an affordance — which is what CnTabs' comment explicitly rejects, so it would need arguing there rather than here.
I have no basis to pick. Option 1 looks strongest to me because it keeps both properties, but it is a change to what the header offers and that is not mine to decide.
Filed rather than fixed. The two fixture bugs in the same file are in #2011.
case-header.spec.ts:287— "the work tabs share one line at 1024, above the fold" — fails on the current suite, and it cannot be fixed in either place without someone deciding something. I fixed the other two failures in that file (#2011) and left this one alone deliberately.The failure
Five work tabs on three rows at a 1024px viewport.
Why this is not a test bug
The test's own comment states the requirement it is guarding:
Relaxing the assertion would convert that back into an unobserved product gap. It is the one repair that must not happen here.
Why it is not a component bug either
The wrapping is
.cn-tabs__navin@conduction/nextcloud-vue'sCnTabs, and it is deliberate, with its reasoning written beside it:That is a considered accessibility choice. Overriding it from one app — or changing it in a library all 21 apps share — to satisfy one spec would trade a real property for a green test.
So the two requirements have diverged
Both are right on their own terms. They are jointly unsatisfiable at nine tabs and this label length on a 1024px viewport. The case header now carries five work tabs plus four conditional ones.
The decision someone owns
I have no basis to pick. Option 1 looks strongest to me because it keeps both properties, but it is a change to what the header offers and that is not mine to decide.
Filed rather than fixed. The two fixture bugs in the same file are in #2011.