Skip to content

Commit 72c4bf1

Browse files
authored
chore(html): make nav buttons into proper links (microsoft#36838)
1 parent 0b7c672 commit 72c4bf1

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

packages/html-reporter/src/headerView.spec.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ test('should render counters', async ({ mount }) => {
3939
await expect(component).toMatchAriaSnapshot(`
4040
- navigation:
4141
- link "All90"
42-
- text: Passed42 Failed31 Flaky17 Skipped10
42+
- link "Passed42"
43+
- link "Failed31"
44+
- link "Flaky17"
45+
- link "Skipped10"
4346
`);
4447
});
4548

packages/html-reporter/src/headerView.tsx

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -81,31 +81,34 @@ export const GlobalFilterView: React.FC<{
8181
const StatsNavView: React.FC<{
8282
stats: Stats
8383
}> = ({ stats }) => {
84-
const searchParams = React.useContext(SearchParamsContext);
85-
const q = searchParams.get('q')?.toString() || '';
8684
return <nav>
8785
<Link className='subnav-item' href='#?'>
8886
<span className='subnav-item-label'>All</span>
8987
<span className='d-inline counter'>{stats.total - stats.skipped}</span>
9088
</Link>
91-
<Link className='subnav-item' click={filterWithQuery(q, 's:passed', false)} ctrlClick={filterWithQuery(q, 's:passed', true)}>
92-
<span className='subnav-item-label'>Passed</span>
93-
<span className='d-inline counter'>{stats.expected}</span>
94-
</Link>
95-
<Link className='subnav-item' click={filterWithQuery(q, 's:failed', false)} ctrlClick={filterWithQuery(q, 's:failed', true)}>
96-
{!!stats.unexpected && statusIcon('unexpected')}
97-
<span className='subnav-item-label'>Failed</span>
98-
<span className='d-inline counter'>{stats.unexpected}</span>
99-
</Link>
100-
<Link className='subnav-item' click={filterWithQuery(q, 's:flaky', false)} ctrlClick={filterWithQuery(q, 's:flaky', true)}>
101-
{!!stats.flaky && statusIcon('flaky')}
102-
<span className='subnav-item-label'>Flaky</span>
103-
<span className='d-inline counter'>{stats.flaky}</span>
104-
</Link>
105-
<Link className='subnav-item' click={filterWithQuery(q, 's:skipped', false)} ctrlClick={filterWithQuery(q, 's:skipped', true)}>
106-
{!!stats.skipped && statusIcon('skipped')}
107-
<span className='subnav-item-label'>Skipped</span>
108-
<span className='d-inline counter'>{stats.skipped}</span>
109-
</Link>
89+
<NavLink token='passed' count={stats.expected} />
90+
<NavLink token='failed' count={stats.unexpected} />
91+
<NavLink token='flaky' count={stats.flaky} />
92+
<NavLink token='skipped' count={stats.skipped} />
11093
</nav>;
11194
};
95+
96+
const NavLink: React.FC<{
97+
token: string,
98+
count: number,
99+
}> = ({ token, count }) => {
100+
const searchParams = React.useContext(SearchParamsContext);
101+
const q = searchParams.get('q')?.toString() || '';
102+
const queryToken = `s:${token}`;
103+
104+
const clickUrl = filterWithQuery(q, queryToken, false);
105+
const ctrlClickUrl = filterWithQuery(q, queryToken, true);
106+
107+
const label = token.charAt(0).toUpperCase() + token.slice(1);
108+
109+
return <Link className='subnav-item' href={clickUrl} click={clickUrl} ctrlClick={ctrlClickUrl}>
110+
{count > 0 && statusIcon(token as any)}
111+
<span className='subnav-item-label'>{label}</span>
112+
<span className='d-inline counter'>{count}</span>
113+
</Link>;
114+
};

0 commit comments

Comments
 (0)