diff --git a/docs/src/api-testing-csharp.md b/docs/src/api-testing-csharp.md index ad2ec13605..890310311a 100644 --- a/docs/src/api-testing-csharp.md +++ b/docs/src/api-testing-csharp.md @@ -94,6 +94,7 @@ using NUnit.Framework; namespace PlaywrightTests { + [TestFixture] public class TestGitHubAPI : PlaywrightTest { static string REPO = "test-repo-2"; @@ -102,7 +103,7 @@ namespace PlaywrightTests private IAPIRequestContext Request = null; - [Test] + [PlaywrightTest] public async Task ShouldCreateBugReport() { var data = new Dictionary(); @@ -129,7 +130,7 @@ namespace PlaywrightTests Assert.AreEqual("Bug description", issue?.GetProperty("body").GetString()); } - [Test] + [PlaywrightTest] public async Task ShouldCreateFeatureRequests() { var data = new Dictionary(); @@ -219,6 +220,7 @@ using NUnit.Framework; namespace PlaywrightTests { + [TestFixture] public class TestGitHubAPI : PlaywrightTest { static string REPO = "test-repo-2"; @@ -227,7 +229,7 @@ namespace PlaywrightTests private IAPIRequestContext Request = null; - [Test] + [PlaywrightTest] public async Task ShouldCreateBugReport() { var data = new Dictionary(); @@ -254,7 +256,7 @@ namespace PlaywrightTests Assert.AreEqual("Bug description", issue?.GetProperty("body").GetString()); } - [Test] + [PlaywrightTest] public async Task ShouldCreateFeatureRequests() { var data = new Dictionary(); @@ -341,7 +343,7 @@ The following test creates a new issue via API and then navigates to the list of project to check that it appears at the top of the list. The check is performed using [LocatorAssertions]. ```csharp - [Test] + [PlaywrightTest] public async Task LastCreatedIssueShouldBeFirstInTheList() { var data = new Dictionary(); @@ -364,7 +366,7 @@ The following test creates a new issue via user interface in the browser and the it was created: ```csharp - [Test] + [PlaywrightTest] public async Task LastCreatedIssueShouldBeOnTheServer() { await Page.GotoAsync("https://github.com/" + USER + "/" + REPO + "/issues"); diff --git a/docs/src/api/class-locatorassertions.md b/docs/src/api/class-locatorassertions.md index 7d57ca5d9c..b4685e5984 100644 --- a/docs/src/api/class-locatorassertions.md +++ b/docs/src/api/class-locatorassertions.md @@ -54,9 +54,10 @@ using NUnit.Framework; namespace PlaywrightTests; +[TestFixture] public class ExampleTests : PageTest { - [Test] + [PlaywrightTest] public async Task StatusBecomesSubmitted() { // .. diff --git a/docs/src/api/class-pageassertions.md b/docs/src/api/class-pageassertions.md index 9163c1af62..014b28a221 100644 --- a/docs/src/api/class-pageassertions.md +++ b/docs/src/api/class-pageassertions.md @@ -56,9 +56,10 @@ using NUnit.Framework; namespace PlaywrightTests; +[TestFixture] public class ExampleTests : PageTest { - [Test] + [PlaywrightTest] public async Task NavigatetoLoginPage() { // .. diff --git a/docs/src/api/class-playwrightassertions.md b/docs/src/api/class-playwrightassertions.md index 416fc4ccf0..38571c6fbf 100644 --- a/docs/src/api/class-playwrightassertions.md +++ b/docs/src/api/class-playwrightassertions.md @@ -55,9 +55,10 @@ using NUnit.Framework; namespace PlaywrightTests; +[TestFixture] public class ExampleTests : PageTest { - [Test] + [PlaywrightTest] public async Task StatusBecomesSubmitted() { await Page.Locator("#submit-button").ClickAsync(); diff --git a/docs/src/intro-csharp.md b/docs/src/intro-csharp.md index 1fe8423baa..0b654d04a0 100644 --- a/docs/src/intro-csharp.md +++ b/docs/src/intro-csharp.md @@ -98,9 +98,10 @@ using NUnit.Framework; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class Tests : PageTest { - [Test] + [PlaywrightTest] public async Task HomepageHasPlaywrightInTitleAndGetStartedLinkLinkingtoTheIntroPage() { await Page.GotoAsync("https://playwright.dev"); @@ -135,7 +136,7 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1 : PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task HomepageHasPlaywrightInTitleAndGetStartedLinkLinkingtoTheIntroPage() { await Page.GotoAsync("https://playwright.dev"); diff --git a/docs/src/release-notes-csharp.md b/docs/src/release-notes-csharp.md index 0380ab4cfa..91f01a9c75 100644 --- a/docs/src/release-notes-csharp.md +++ b/docs/src/release-notes-csharp.md @@ -260,9 +260,10 @@ using NUnit.Framework; namespace PlaywrightTests; +[TestFixture] public class ExampleTests : PageTest { - [Test] + [PlaywrightTest] public async Task StatusBecomesSubmitted() { await Expect(Page.Locator(".status")).ToHaveTextAsync("Submitted"); diff --git a/docs/src/test-runners-csharp.md b/docs/src/test-runners-csharp.md index b05cbfa21b..481859d7a4 100644 --- a/docs/src/test-runners-csharp.md +++ b/docs/src/test-runners-csharp.md @@ -41,16 +41,17 @@ using Microsoft.Playwright.NUnit; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class MyTest : PageTest { - [Test] + [PlaywrightTest] public async Task ShouldHaveTheCorrectSlogan() { await Page.GotoAsync("https://playwright.dev"); await Expect(Page.Locator("text=enables reliable end-to-end testing for modern web apps")).ToBeVisibleAsync(); } - [Test] + [PlaywrightTest] public async Task ShouldHaveTheCorrectTitle() { await Page.GotoAsync("https://playwright.dev"); @@ -121,9 +122,10 @@ using Microsoft.Playwright.NUnit; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class MyTest : PageTest { - [Test] + [PlaywrightTest] public async Task TestWithCustomContextOptions() { // The following Page (and BrowserContext) instance has the custom colorScheme, viewport and baseURL set: @@ -215,6 +217,10 @@ There are a few base classes available to you in `Microsoft.Playwright.NUnit` na |BrowserTest |Each test will get a browser and can create as many contexts as it likes. Each test is responsible for cleaning up all the contexts it created.| |PlaywrightTest|This gives each test a Playwright object so that the test could start and stop as many browsers as it likes.| +### 'No test is available' + +You need to add `[TestFixture]` to your test class. NUnit does not discover tests without it, if the `TestAttribute` comes from a different assembly. + ## MSTest Playwright provides base classes to write tests with MSTest via the [`Microsoft.Playwright.MSTest`](https://www.nuget.org/packages/Microsoft.Playwright.MSTest) package. @@ -244,14 +250,14 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1: PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task ShouldHaveTheCorrectSlogan() { await Page.GotoAsync("https://playwright.dev"); await Expect(Page.Locator("text=enables reliable end-to-end testing for modern web apps")).ToBeVisibleAsync(); } - [TestMethod] + [PlaywrightTestMethod] public async Task ShouldHaveTheCorrectTitle() { await Page.GotoAsync("https://playwright.dev"); @@ -329,7 +335,7 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1 : PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task TestWithCustomContextOptions() { // The following Page (and BrowserContext) instance has the custom colorScheme, viewport and baseURL set: diff --git a/docs/src/writing-tests-csharp.md b/docs/src/writing-tests-csharp.md index e9bb085a9d..27616cf3ee 100644 --- a/docs/src/writing-tests-csharp.md +++ b/docs/src/writing-tests-csharp.md @@ -24,9 +24,10 @@ using Microsoft.Playwright.NUnit; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class Tests : PageTest { - [Test] + [PlaywrightTest] public async Task HomepageHasPlaywrightInTitleAndGetStartedLinkLinkingtoTheIntroPage() { await Page.GotoAsync("https://playwright.dev"); @@ -61,7 +62,7 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1 : PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task HomepageHasPlaywrightInTitleAndGetStartedLinkLinkingtoTheIntroPage() { await Page.GotoAsync("https://playwright.dev"); @@ -136,9 +137,10 @@ using NUnit.Framework; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class Tests : PageTest { - [Test] + [PlaywrightTest] public async Task BasicTest() { await Page.GotoAsync("https://playwright.dev"); @@ -157,7 +159,7 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1 : PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task BasicTest() { await Page.GotoAsync("https://playwright.dev"); @@ -190,9 +192,10 @@ using NUnit.Framework; namespace PlaywrightTests; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class Tests : PageTest { - [Test] + [PlaywrightTest] public async Task MainNavigation() { // Assertions use the expect API. @@ -218,7 +221,7 @@ namespace PlaywrightTests; [TestClass] public class UnitTest1 : PageTest { - [TestMethod] + [PlaywrightTestMethod] public async Task MainNavigation() { // Assertions use the expect API. diff --git a/packages/playwright-core/src/server/recorder/csharp.ts b/packages/playwright-core/src/server/recorder/csharp.ts index a147fc45f7..33d52471ff 100644 --- a/packages/playwright-core/src/server/recorder/csharp.ts +++ b/packages/playwright-core/src/server/recorder/csharp.ts @@ -195,7 +195,8 @@ export class CSharpLanguageGenerator implements LanguageGenerator { using Microsoft.Playwright.${this._mode === 'nunit' ? 'NUnit' : 'MSTest'}; using Microsoft.Playwright; - ${this._mode === 'nunit' ? '[Parallelizable(ParallelScope.Self)]' : '[TestClass]'} + ${this._mode === 'nunit' ? `[Parallelizable(ParallelScope.Self)] + [TestFixture]` : '[TestClass]'} public class Tests : PageTest {`); const formattedContextOptions = formatContextOptions(options.contextOptions, options.deviceName); @@ -206,7 +207,7 @@ export class CSharpLanguageGenerator implements LanguageGenerator { }`); formatter.newLine(); } - formatter.add(` [${this._mode === 'nunit' ? 'Test' : 'TestMethod'}] + formatter.add(` [${this._mode === 'nunit' ? 'PlaywrightTest' : 'PlaywrightTestMethod'}] public async Task MyTest() {`); return formatter.format(); diff --git a/tests/library/inspector/cli-codegen-csharp.spec.ts b/tests/library/inspector/cli-codegen-csharp.spec.ts index 4973906116..78e47e0ad6 100644 --- a/tests/library/inspector/cli-codegen-csharp.spec.ts +++ b/tests/library/inspector/cli-codegen-csharp.spec.ts @@ -232,7 +232,7 @@ public class Tests : PageTest }; } - [TestMethod] + [PlaywrightTestMethod] public async Task MyTest() { // Go to ${emptyHTML} @@ -250,6 +250,7 @@ test(`should print a valid basic program in nunit`, async ({ runCLI }) => { using Microsoft.Playwright; [Parallelizable(ParallelScope.Self)] +[TestFixture] public class Tests : PageTest { public override BrowserNewContextOptions ContextOptions() @@ -260,7 +261,7 @@ public class Tests : PageTest }; } - [Test] + [PlaywrightTest] public async Task MyTest() { // Go to ${emptyHTML}