playwright-blazor-testing
Write UI tests for Blazor applications (Server or WebAssembly) using Playwright.
Skill by ComeOnOliver
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/comeonoliver-playwright-blazor-testing
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, backend, testing, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/playwright-blazor-testing
What's inside
- Skill name
playwright-blazor-testing- Description
- Write UI tests for Blazor applications (Server or WebAssembly) using Playwright. Covers navigation, interaction, authentication, selectors, and common Blazor-specific patterns.
- License
- MIT
- Instructions
- 620 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- name: "playwright-blazor-testing" does not match folder "playwright-blazor"
- body: 620 lines (spec recommends under 500)
Files (1)
- SKILL.md
SKILL.md (first lines)
# Testing Blazor Applications with Playwright
## When to Use This Skill
Use this skill when:
- Writing end-to-end UI tests for Blazor Server or WebAssembly applications
- Testing interactive components, forms, and user workflows
- Verifying authentication and authorization flows
- Testing SignalR-based real-time updates in Blazor Server
- Capturing screenshots for visual regression testing
- Testing responsive designs and mobile emulation
- Debugging UI issues with browser developer tools
## Core Principles
1. **Wait for Rendering** - Blazor renders asynchronously; use proper wait strategies
2. **Test Attributes** - Use `data-test` or `data-testid` attributes for stable selectors
3. **Headless by Default** - Run tests headless in CI, headed for local debugging
4. **Handle Error UI** - Always check for `#blazor-error-ui` to catch unhandled exceptions
5. **Avoid Network Wait States** - Blazor navigation doesn't trigger network loads; wait for DOM changes
6. **Pin Browser Channels** - Use specific browser channels (msedge, chrome) for reproducibility
## Required NuGet Packages
```xml
<ItemGroup>
<PackageReference Include="Microsoft.Playwright" Version="*" />
<PackageReference Include="Microsoft.Playwright.MSTest" Version="*" />
<!-- OR for xUnit -->
<PackageReference Include="xunit" Version="*" />
<PackageReference Include="xunit.runner.visualstudio" Version="*" />
</ItemGroup>
```
## Installation
Before running tests, install Playwright browsers:
```bash
pwsh -Command "playwright install --with-deps"
```
## Pattern 1: Basic Playwright Setup
```csharp
using Microsoft.Playwright;
public class PlaywrightFixture : IAsyncLifetime
{
private IPlaywright? _playwright;
private IBrowser? _browser;
public IBrowser Browser => _browser
?? throw new InvalidOperationException("Browser not initialized");
public async Task InitializeAsync()
{
_playwright = await Playwright.CreateAsync();
_browser = await _playwright.Chromium.LaunchAsync(new()
{
Headless = true,
// For CI/debugging, you might want:
// Headless = Environment.GetEnvironmentVariable("CI") != null,
// SlowMo = 100 // Slow down actions for debugging
});
}
public async Task DisposeAsync()
{
if (_browser is not null)
await _browser.DisposeAsync();
_playwright?.Dispose();
}
}
```
## Pattern 2: Navigation in Blazor Apps
### Initial Page Load (Classic Navigation)
```csharp
[Fact]
public async Task InitialPageLoad()
{
var page = await _fixture.Browser.NewPageAsync();
// First load is classic HTTP navigation
await page.GotoAsync("https://localhost:5001");
// Wait for Blazor to initialize
await page.WaitForSelectorAsync("h1:has-text('Welcome')");
Assert.True(await page.IsVisibleAsync("h1:has-text('Welcome')"));
}
```
### In-App Navigation (No Page Reload)
Blazor uses client-side routing, so subsequent navigations don't trigger page reloads:
```csharp
[Fact]
public async Task InternalNavigation()
{
var page = await _fixture.Browser.NewPageAsync();
await page.GotoAsync("https://localhost:5001");
// Method 1: Click a navigation link
await page.GetByRole(AriaRole.Link, new() { Name = "Counter" })
.ClickAsync();
// Wait for the new page content (NOT network idle!)
await page.WaitForSelectorAsync("h1:has-text('Counter')");
// Method 2: Programmatic navigation (Blazor 8+)
await page.EvaluateAsync("window.Blazor.navigateTo('/fetchdata')");
await page.WaitForSelectorAsync("h1:has-text('Weather')");From ComeOnOliver/skillshub, MIT.
More from ComeOnOliver/skillshub
- 0.512score
solidity-coding
ComeOnOliver
[AUTO-INVOKE] MUST be invoked BEFORE writing or modifying any Solidity contract (.sol files).
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
solidity-debug
ComeOnOliver
[AUTO-INVOKE] MUST be invoked when debugging failed on-chain transactions.
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
ilspy-decompile
ComeOnOliver
Understand implementation details of .NET code by decompiling assemblies.
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
solidity-audit
ComeOnOliver
Security audit and code review checklist.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
crap-analysis
ComeOnOliver
Analyze code coverage and CRAP (Change Risk Anti-Patterns) scores to identify high-risk code.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
claude-code-usage
ComeOnOliver
[AUTO-INVOKE] MUST be invoked at the START of each new coding session.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
package-management
ComeOnOliver
Manage NuGet packages using Central Package Management (CPM) and dotnet CLI commands.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
solidity-deploy
ComeOnOliver
[AUTO-INVOKE] MUST be invoked BEFORE deploying contracts or writing deployment scripts (*.s.sol).
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
microsoft-extensions-configuration
ComeOnOliver
Microsoft.Extensions.Options patterns including IValidateOptions, strongly-typed settings, validation on startup, and the Options pattern for clean…
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
aspire-service-defaults
ComeOnOliver
Create a shared ServiceDefaults project for Aspire applications.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
defi-security
ComeOnOliver
[AUTO-INVOKE] MUST be invoked BEFORE deploying DeFi contracts (DEX, lending, staking, LP, token).
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
dotnet-devcert-trust
ComeOnOliver
Diagnose and fix .NET HTTPS dev certificate trust issues on Linux.
SkillDFreshness: D★ 64Claude Code +9
Signals
- Stars
- 64
- Forks
- 24
- Open issues
- 30
- Last commit (this folder)
- Mar 23, 2026 (7 months ago)
- Last release
- Apr 3, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ComeOnOliver/skillshub
- Website
- skillshub.wtf
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ComeOnOliver
- 0.512score
ilspy-decompile
ComeOnOliver
Understand implementation details of .NET code by decompiling assemblies.
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
solidity-audit
ComeOnOliver
Security audit and code review checklist.
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
solidity-debug
ComeOnOliver
[AUTO-INVOKE] MUST be invoked when debugging failed on-chain transactions.
SkillDFreshness: D★ 64Claude Code +9 - 0.512score
solidity-coding
ComeOnOliver
[AUTO-INVOKE] MUST be invoked BEFORE writing or modifying any Solidity contract (.sol files).
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
claude-code-usage
ComeOnOliver
[AUTO-INVOKE] MUST be invoked at the START of each new coding session.
SkillDFreshness: D★ 64Claude Code +9 - 0.509score
solidity-deploy
ComeOnOliver
[AUTO-INVOKE] MUST be invoked BEFORE deploying contracts or writing deployment scripts (*.s.sol).
SkillDFreshness: D★ 64Claude Code +9
Cite this page
playwright-blazor-testing skill. Agent Mart. https://agentmart.dev/skills/comeonoliver-playwright-blazor-testing (last updated 2026-10-24)