Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
3a7e997
feat(app): make sidebar status chips the single-select test filter
vishnuv688 Jun 12, 2026
ad6dab3
feat(app): color action durations by per-step heat; fix(app): consist…
vishnuv688 Jun 12, 2026
a46167b
feat(app): timeline chips, connector rail, and active-row highlight
vishnuv688 Jun 12, 2026
0b297f6
fix(app): extend timeline rail across all actions
vishnuv688 Jun 12, 2026
b85c2cc
feat(app): port the dashboard UI to the redesign mockup
vishnuv688 Jun 15, 2026
f6dbe28
fix(service,nightwatch): hide automation infobar on the dashboard window
vishnuv688 Jun 15, 2026
a9f3a28
Merge branch 'main' into vv/devtools-new-ui
vishnuv688 Jun 15, 2026
0ae49cd
feat: Screencast scrubber with action markers
vishnuv688 Jun 15, 2026
714331b
feat: Sync screencast playback with action timeline and source
vishnuv688 Jun 15, 2026
a636b11
style: Align dashboard layout and components with redesign mockup
vishnuv688 Jun 15, 2026
485ffe6
fix: Theme-adaptive light mode, segmented toggle, and screencast polish
vishnuv688 Jun 15, 2026
d922ab1
feat: Redesign Network panel
vishnuv688 Jun 16, 2026
1f16a2e
feat: Redesign Metadata tab as collapsible cards
vishnuv688 Jun 16, 2026
4464403
feat: Redesign Metadata tab as collapsible cards
vishnuv688 Jun 16, 2026
f2abcde
feat: Console and Log new layout design
vishnuv688 Jun 16, 2026
a2845bb
feat: iframe url mapping
vishnuv688 Jun 16, 2026
920fe93
fix: select one action per click and resolve its page URL from commands
vishnuv688 Jun 16, 2026
bdcf439
refactor: move console level filters to the filter module and drop de…
vishnuv688 Jun 16, 2026
9736cca
fix: attribute preserved baseline commands by source location
vishnuv688 Jun 16, 2026
37de7b5
feat: redesign the Compare tab to match the devtools mockup
vishnuv688 Jun 16, 2026
21107b0
fix: align the resize-divider line with the pane boundary
vishnuv688 Jun 17, 2026
dce27da
docs: Add local demo GIFs for the redesigned dashboard UI
vishnuv688 Jun 17, 2026
5920ead
fix: Align Compare status ticks when a row also shows only here
vishnuv688 Jun 17, 2026
ce17dfc
feat: Redesign the Source panel with a file switcher and call-site co…
vishnuv688 Jun 18, 2026
107339c
chore: pnpm-lock.yaml update
vishnuv688 Jun 18, 2026
772156c
Merge branch 'main' into vv/devtools-new-ui
vishnuv688 Jun 18, 2026
c7516b3
feat: Included waterfall option in Network
vishnuv688 Jun 18, 2026
cceb1b7
fix(baseline): keep assertion commands with the test they ran in
vishnuv688 Jun 18, 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
25 changes: 16 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,28 +125,35 @@ See [ARCHITECTURE.md](./ARCHITECTURE.md) for the full package map and data flow,

## Demo

### ▶️ Test Runner
<img src="assets/test-runner.gif" alt="Test Runner Demo" width="400" />

### 🛠️ Test Rerunner & Snapshot
<img src="https://github.com/user-attachments/assets/c3804559-c0ec-441a-80dc-e4048385f3b2" alt="Test Rerunner & Snapshot Demo" width="400" />
<img src="assets/test-rerunner.gif" alt="Test Rerunner & Snapshot Demo" width="400" />

### 🛑 Stop Test Runner
<img src="https://github.com/user-attachments/assets/f42e43ed-bfac-4280-be5f-87895fb232d3" alt="Stop Test Runner Demo" width="400" />
<img src="assets/stop-test-runner.gif" alt="Stop Test Runner Demo" width="400" />

### 🔍︎ TestLens
<img src="https://github.com/user-attachments/assets/72c576a1-330a-49c4-affe-df260e7c70df" alt="TestLens Demo" width="400" />
### ⚡ Actions & Command Logs
<img src="assets/actions-command-logs.gif" alt="Actions & Command Logs Demo" width="400" />

### >_ Console Logs
<img src="https://github.com/user-attachments/assets/aff14f15-a298-4a12-bc3d-8e4deefddae6" alt="Console Logs" width="400" />
<img src="assets/console-logs.gif" alt="Console Logs Demo" width="400" />

### 🌐 Network Logs
<img src="https://github.com/user-attachments/assets/2cca4885-f989-4d07-b7ce-a4fa476c3c1c" alt="Network Logs 1" width="400" />
<img src="assets/network-logs.gif" alt="Network Logs Demo" width="400" />

<img src="https://github.com/user-attachments/assets/0f81e0af-75b5-454f-bffb-e40654c89908" alt="Network Logs 2" width="400" />
### 📋 Metadata
<img src="assets/metadata.gif" alt="Metadata Demo" width="400" />

### 🎬 Session Screencast
<img src="https://github.com/user-attachments/assets/65914424-480f-4b50-b54a-69e659710f15" alt="Screencast" width="400" />
<img src="assets/screencast.gif" alt="Session Screencast Demo" width="400" />

### 🐞 Preserve & Rerun
<img src="https://github.com/user-attachments/assets/247d687e-59ae-41ba-83c8-ad6be9ff7687" alt="Preserve & Rerun" width="400" />
<img src="assets/preserve-rerun.gif" alt="Preserve & Rerun Demo" width="400" />

### 🔍︎ TestLens
<img src="assets/testlens.gif" alt="TestLens Demo" width="400" />

## Installation

Expand Down
Binary file added assets/actions-command-logs.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/console-logs.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/metadata.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/network-logs.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/preserve-rerun.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/screencast.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/stop-test-runner.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/test-rerunner.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/test-runner.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/testlens.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion examples/nightwatch/nightwatch.conf.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ module.exports = {
'--headless',
'--no-sandbox',
'--disable-dev-shm-usage',
'--window-size=1600,1200'
'--window-size=1600,900'
]
},
'goog:loggingPrefs': { performance: 'ALL' }
Expand Down
2 changes: 1 addition & 1 deletion examples/wdio/wdio.conf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export const config: Options.Testrunner = {
'--headless',
'--disable-gpu',
'--remote-allow-origins=*',
'--window-size=1600,1200'
'--window-size=1600,900'
]
}
// }, {
Expand Down
1 change: 1 addition & 0 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
},
"dependencies": {
"@codemirror/lang-javascript": "^6.2.5",
"@codemirror/state": "^6.5.4",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.43.0",
"@iconify-json/mdi": "^1.2.3",
Expand Down
16 changes: 14 additions & 2 deletions packages/app/src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ import { TraceType, type TraceLog } from '@wdio/devtools-shared'
import { Element } from '@core/element'
import { DataManagerController } from './controller/DataManager.js'
import { DragController, Direction } from './utils/DragController.js'
import { SIDEBAR_MIN_WIDTH, DARK_MODE_KEY } from './controller/constants.js'
import {
SIDEBAR_MIN_WIDTH,
SIDEBAR_DEFAULT_WIDTH,
DARK_MODE_KEY
} from './controller/constants.js'
import { POPOUT_QUERY } from './components/workbench/compare/constants.js'

// Bootstrap the dark-mode class on <body> as early as possible so popout
Expand All @@ -28,6 +32,14 @@ window.addEventListener('storage', (e) => {
document.body.classList.toggle('dark', e.newValue === 'true')
}
})
// Follow live OS theme changes while the user hasn't set an explicit override.
window
.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', (e) => {
if (localStorage.getItem(DARK_MODE_KEY) === null) {
document.body.classList.toggle('dark', e.matches)
}
})

import './components/header.js'
import './components/sidebar.js'
Expand Down Expand Up @@ -65,7 +77,7 @@ export class WebdriverIODevtoolsApplication extends Element {
#drag = new DragController(this, {
localStorageKey: 'sidebarWidth',
minPosition: SIDEBAR_MIN_WIDTH,
initialPosition: window.innerWidth * 0.2,
initialPosition: SIDEBAR_DEFAULT_WIDTH,
getContainerEl: () => this.#getWindow(),
direction: Direction.horizontal
})
Expand Down
36 changes: 36 additions & 0 deletions packages/app/src/components/browser/browser-chrome.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import type { nothing } from 'lit'
import { html, type TemplateResult } from 'lit'

import '~icons/mdi/world.js'
import '~icons/mdi/lock.js'

/** The browser-frame chrome: traffic-light dots, address bar (with a lock for
* https), and a slot for the Snapshot/Screencast view toggle. Extracted from
* the snapshot component so that file stays focused on capture/replay. */
export function renderBrowserChrome(
displayUrl: string | undefined,
viewToggle: TemplateResult | typeof nothing
): TemplateResult {
return html`
<header
class="flex items-center mx-2 bg-sideBarBackground rounded-t-[14px]"
>
<div class="frame-dot bg-notificationsErrorIconForeground"></div>
<div class="frame-dot bg-notificationsWarningIconForeground"></div>
<div class="frame-dot bg-portsIconRunningProcessForeground"></div>
<div
class="flex items-center mx-4 my-2 pr-2 bg-input-background text-inputForeground border border-editorSuggestWidgetBorder rounded leading-7 flex-1 min-w-0 overflow-hidden"
>
${displayUrl?.startsWith('https')
? html`<icon-mdi-lock
class="w-[16px] h-[16px] m-1 mr-2 flex-shrink-0 text-chartsGreen"
></icon-mdi-lock>`
: html`<icon-mdi-world
class="w-[20px] h-[20px] m-1 mr-2 flex-shrink-0"
></icon-mdi-world>`}
<span class="truncate">${displayUrl}</span>
</div>
${viewToggle}
</header>
`
}
Loading
Loading