Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
830099b
test: an operator opens a device drawer and its Screen tab (#910)
V3RON Oct 23, 2026
94319f3
feat(ui): a device's Screen tab starts its picture when opened and st…
V3RON Oct 23, 2026
0b75e35
test: the Screen tab of a device that is not running shows each state…
V3RON Oct 23, 2026
066c41b
feat(ui): the Screen tab says why a device that is not running has no…
V3RON Oct 23, 2026
5d7dcc8
test: the Screen tab of a device that is not running starts no captur…
V3RON Oct 23, 2026
188a83d
test: the stream numbers sit behind Stream details in a popover (#910)
V3RON Oct 23, 2026
185e200
feat(ui): the stream numbers move behind a Stream details button (#910)
V3RON Oct 23, 2026
b31dc6a
test: a stream path that names no stream, a lease's included, answers…
V3RON Oct 23, 2026
6350ee5
feat(stream): remove the lease stream route; a path that names no str…
V3RON Oct 23, 2026
3f537fd
docs: the device drawer's Screen tab replaces the lease's Screen tab …
V3RON Oct 23, 2026
bc01ac5
test: the stream mount's listed route is the device route (#910)
V3RON Oct 23, 2026
b0e1827
test: a device drawer's tab lives in ?drawer= and row links never car…
V3RON Oct 23, 2026
be9df5f
test(e2e): streaming off is the only reason a leased device on that w…
V3RON Oct 23, 2026
902da6e
test(e2e): the Screen tab shows the daemon's words for a 409 on a lea…
V3RON Oct 23, 2026
b394f29
style(ui): format the screen panel stylesheet (#910)
V3RON Oct 23, 2026
65afbcb
Merge remote-tracking branch 'origin/task/912' into HEAD
V3RON Oct 23, 2026
d13cf2f
Merge remote-tracking branch 'origin/task/912' into HEAD
V3RON Oct 23, 2026
bae6c52
Merge remote-tracking branch 'origin/task/912' into HEAD
V3RON Oct 23, 2026
f2af24e
fix(ui): read the workers list through the route query layer; the Scr…
V3RON Oct 23, 2026
1608f32
Merge remote-tracking branch 'origin/task/912' into HEAD
V3RON Oct 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/internal/DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ put together from them and draws nothing of its own that one of them already dra
device row opens the drawer. Choosing a lease, a device, a request or an event opens a **drawer**: a 480px
panel (full width under 768px) at the right edge over the page, with a dim layer over everything
else, the sidebar included. It has a title (a lease's holder, a device's model and runtime, a request's requester, an event's name), a 40px square close button
(`IconButton`) and, for a lease, tabs. Escape, the close button and the dim layer close it. It slides in once, when it opens,
(`IconButton`) and, for a lease or a device, tabs: a device's are Details and Screen, a lease's Details and Events. Escape, the close button and the dim layer close it. It slides in once, when it opens,
and switching its tabs does not replay that. A lease's drawer uses no status colour of its own;
a device's shows the device's state as a status, word and square.
- **Menu.** A table row ends in a **⋯** `IconButton` that opens a small list; a right-click on the
Expand Down
13 changes: 11 additions & 2 deletions e2e/console/fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -435,15 +435,24 @@ export interface Fleet {
* leases through the gateway or reads a card's capacity right away would see that gap.
*/
export async function startFleet(
workers: readonly { readonly label: string; readonly driverScript?: FakeDriverScript }[],
workers: readonly {
readonly label: string;
readonly driverScript?: FakeDriverScript;
readonly config?: Readonly<Record<string, unknown>>;
}[],
options: { readonly gatewayConfig?: Readonly<Record<string, unknown>> } = {},
): Promise<Fleet> {
const gateway = await startDaemon("gateway");
const gateway = await startDaemon(
"gateway",
options.gatewayConfig === undefined ? {} : { config: options.gatewayConfig },
);
const started: RunningDaemon[] = [];
try {
for (const worker of workers) {
started.push(
await startDaemon("worker", {
config: {
...worker.config,
gateway: {
label: worker.label,
token: gateway.tokens.worker,
Expand Down
5 changes: 2 additions & 3 deletions e2e/console/leases.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ test.describe("the leases page", () => {

await leaseRow(page, lease.id).click();
await expect(page.getByRole("dialog")).toBeVisible();
for (const name of ["Screen", "Details", "Screen", "Details"]) {
for (const name of ["Events", "Details", "Events", "Details"]) {
await page.getByRole("tab", { name }).click();
}
await page.waitForTimeout(400);
Expand Down Expand Up @@ -649,8 +649,7 @@ test.describe("the leases page", () => {
await leaseRow(page, granted.id).click();
await expect(inspectorTitle(page, /ci-runner-3/)).toBeVisible();
await expect(fact(page, "Device", "UDID")).toHaveText(granted.udid);
await page.getByRole("tab", { name: "Screen" }).click();
await expect(page.getByRole("button", { name: "Show screen" })).toBeVisible();
await expect(page.getByRole("dialog").getByRole("tab")).toHaveText(["Details", "Events"]);
expect(await hasHorizontalScroll(page)).toBe(false);
} finally {
await host.dispose();
Expand Down
Loading
Loading