К основному содержанию
правило официальный · GitHub

playwright-dotnet — правило для GitHub Copilot: генерация тестов

Правило задаёт структуру и практики для тестов Playwright на C#. Пригодится, когда Copilot пишет или дорабатывает UI-тесты.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/playwright-dotnet.instructions.md
Открыть на GitHub

Что делает playwright-dotnet

Правило распространяется на все файлы и направляет генерацию тестов Playwright .NET: предлагает группировать проверки по функциям, использовать классы PageTest и давать файлам имена вида <FeatureOrPage>Tests.cs. Для взаимодействий рекомендуются локаторы по ролям и тексту, а для проверок — автоожидающие утверждения Expect().

В инструкциях также описаны варианты настройки для NUnit, xUnit и MSTest, группировка действий через Test.StepAsync() и проверки доступности с ToMatchAriaSnapshotAsync. Запускать тесты предлагается командой dotnet test, затем разбирать сбои и уточнять локаторы или проверки. Поскольку applyTo задан как **, правило влияет на работу Copilot во всём проекте, а не только в папке тестов.

Какие задачи решает

  • создать UI-тесты Playwright на C#
  • сгруппировать проверки по функциям приложения
  • подобрать локаторы по ролям и тексту
  • проверить URL и структуру доступности страницы
  • разобрать сбои после запуска dotnet test

Примеры запросов агенту

  • Создай тест поиска по названию фильма на C# с Playwright и проверкой результатов.
  • Разбей этот тест на шаги и используй локаторы по ролям.
  • Добавь проверку URL после перехода и запускай тесты через dotnet test.

Как установить playwright-dotnet

Вручную: положить файлы

.github/instructions/playwright-dotnet.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Вопросы о playwright-dotnet

Как установить playwright-dotnet в GitHub Copilot?

Добавьте файл .github/instructions/playwright-dotnet.instructions.md в проект.

Что делает playwright-dotnet?

Правило подсказывает Copilot, как создавать и организовывать тесты Playwright .NET: выбирать локаторы, оформлять проверки и группировать тесты.

С какими тестовыми фреймворками работает правило?

В инструкциях приведены варианты для NUnit, xUnit и MSTest, включая атрибуты тестов и способы общей настройки.

Исходный текст

playwright-dotnet.instructions.md · MIT
---
description: 'Playwright .NET test generation instructions'
applyTo: '**'
---

# Playwright .NET Test Generation Instructions

## Test Writing Guidelines

### Code Quality Standards

- **Locators**: Prioritize user-facing, role-based locators (`GetByRole`, `GetByLabel`, `GetByText`, etc.) for resilience and accessibility. Use `await Test.StepAsync()` to group interactions and improve test readability and reporting.
- **Assertions**: Use auto-retrying web-first assertions. These assertions use `Expect()` from Playwright assertions (e.g., `await Expect(locator).ToHaveTextAsync()`). Avoid checking visibility unless specifically testing for visibility changes.
- **Timeouts**: Rely on Playwright's built-in auto-waiting mechanisms. Avoid hard-coded waits or increased default timeouts.
- **Clarity**: Use descriptive test and step titles that clearly state the intent. Add comments only to explain complex logic or non-obvious interactions.

### Test Structure

- **Usings**: Start with `using Microsoft.Playwright;` and either `using Microsoft.Playwright.Xunit;` or `using Microsoft.Playwright.NUnit;` or `using Microsoft.Playwright.MSTest;` for MSTest.
- **Organization**: Create test classes that inherit from `PageTest` (available in NUnit, xUnit, and MSTest packages) or use `IClassFixture<PlaywrightFixture>` for xUnit with custom fixtures. Group related tests for a feature in the same test class.
- **Setup**: Use `[SetUp]` (NUnit), `[TestInitialize]` (MSTest), or constructor initialization (xUnit) for setup actions common to all tests (e.g., navigating to a page).
- **Titles**: Use the appropriate test attribute (`[Test]` for NUnit, `[Fact]` for xUnit, `[TestMethod]` for MSTest) with descriptive method names following C# naming conventions (e.g., `SearchForMovieByTitle`).

### File Organization

- **Location**: Store all test files in a `Tests/` directory or organize by feature.
- **Naming**: Use the convention `<FeatureOrPage>Tests.cs` (e.g., `LoginTests.cs`, `SearchTests.cs`).
- **Scope**: Aim for one test class per major application feature or page.

### Assertion Best Practices

- **UI Structure**: Use `ToMatchAriaSnapshotAsync` to verify the accessibility tree structure of a component. This provides a comprehensive and accessible snapshot.
- **Element Counts**: Use `ToHaveCountAsync` to assert the number of elements found by a locator.
- **Text Content**: Use `ToHaveTextAsync` for exact text matches and `ToContainTextAsync` for partial matches.
- **Navigation**: Use `ToHaveURLAsync` to verify the page URL after an action.

## Example Test Structure

```csharp
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit;
using static Microsoft.Playwright.Assertions;

namespace PlaywrightTests;

public class MovieSearchTests : PageTest
{
    public override async Task InitializeAsync()
    {
        await base.InitializeAsync();
        // Navigate to the application before each test
        await Page.GotoAsync("https://debs-obrien.github.io/playwright-movies-app");
    }

    [Fact]
    public async Task SearchForMovieByTitle()
    {
        await Test.StepAsync("Activate and perform search", async () =>
        {
            await Page.GetByRole(AriaRole.Search).ClickAsync();
            var searchInput = Page.GetByRole(AriaRole.Textbox, new() { Name = "Search Input" });
            await searchInput.FillAsync("Garfield");
            await searchInput.PressAsync("Enter");
        });

        await Test.StepAsync("Verify search results", async () =>
        {
            // Verify the accessibility tree of the search results
            await Expect(Page.GetByRole(AriaRole.Main)).ToMatchAriaSnapshotAsync(@"
                - main:
                  - heading ""Garfield"" [level=1]
                  - heading ""search results"" [level=2]
                  - list ""movies"":
                    - listitem ""movie"":
                      - link ""poster of The Garfield Movie The Garfield Movie rating"":
                        - /url: /playwright-movies-app/movie?id=tt5779228&page=1
                        - img ""poster of The Garfield Movie""
                        - heading ""The Garfield Movie"" [level=2]
            ");
        });
    }
}
```

## Test Execution Strategy

1. **Initial Run**: Execute tests with `dotnet test` or using the test runner in your IDE
2. **Debug Failures**: Analyze test failures and identify root causes
3. **Iterate**: Refine locators, assertions, or test logic as needed
4. **Validate**: Ensure tests pass consistently and cover the intended functionality
5. **Report**: Provide feedback on test results and any issues discovered

## Quality Checklist

Before finalizing tests, ensure:

- [ ] All locators are accessible and specific and avoid strict mode violations
- [ ] Tests are grouped logically and follow a clear structure
- [ ] Assertions are meaningful and reflect user expectations
- [ ] Tests follow consistent naming conventions
- [ ] Code is properly formatted and commented

© github · MIT · github/awesome-copilot

Похожие правила IDE

Все правила IDE по теме «Тесты и QA» →

Из того же набора861

Весь набор →
power-apps-code-apps Задаёт стандарты стека React, TypeScript и Vite для Power Apps Code Apps. Направляет Copilot при работе с Power Platform SDK, вызовах коннекторов и встраивании Power BI. ★ 40 418звёзд репо power-apps-canvas-yaml Правило помогает Copilot работать с YAML-файлами Canvas Apps и формулами Power Fx. Пригодится при правке экранов, компонентов и источников данных приложения. ★ 40 418звёзд репо playwright-typescript Правило задаёт Copilot стиль написания тестов Playwright: ролевые локаторы, автоожидание, единая структура файлов. Пригодится, если тесты пишет агент, а не человек. ★ 40 418звёзд репо playwright-python Задаёт стандарты генерации тестов на Playwright Python в Pytest. Помогает Copilot писать надёжные проверки через expect и ролевые локаторы без хардкодных пауз. ★ 40 418звёзд репо php-symfony Правило задаёт Copilot стиль разработки на Symfony: структура проекта, DI, Doctrine, Twig и тесты. Пригодится, если не хочется объяснять агенту конвенции в каждом чате. ★ 40 418звёзд репо php-mcp-server Инструкция для GitHub Copilot по созданию серверов Model Context Protocol на PHP 8.2+. Помогает ассистенту размечать методы атрибутами и собирать проект через официальный SDK. ★ 40 418звёзд репо performance-optimization Правило помогает находить причины проблем с Core Web Vitals и выбирать исправления для веб-приложения. Пригодится при работе над загрузкой, рендерингом и сдвигами макета. ★ 40 418звёзд репо pcf-tooling Правило подсказывает Copilot, что для сборки, отладки и деплоя код-компонентов нужен Microsoft Power Platform CLI. ★ 40 418звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой