Files
Christoph Schwörer f045b99a25 Codebasis als Dateien ins Arbeitsrepo statt als Gitlink
QuellCode/CentronERP war nur als Gitlink (Submodul-Referenz auf 79c1142)
getrackt, ohne .gitmodules und ohne erreichbares Remote. Der
Untersuchungsgegenstand der Versuchsreihe war damit nicht reproduzierbar
gesichert: Ein Klon haette ein leeres Verzeichnis erhalten, und die Belege
der 3.287 Anforderungen waeren nicht ueberpruefbar gewesen.

Umstellung:
- Historie nach c:\DEV\CentronERP_git_snapshot_79c1142 ausgelagert
  (vollstaendig lesbar, enthaelt 79c1142 und Vorgaenger 89ccfd6)
- Gitlink aus dem Index entfernt
- Dateiinhalt aufgenommen: 24.557 Dateien, rund 333 MB

Die verschachtelte .gitignore der Codebasis gilt weiter, Build-Artefakte
bleiben ausgeschlossen. Details in Versuche/Versuch_01/_Codebasis-Nachweis.md
2026-08-26 07:43:51 +02:00

144 lines
7.2 KiB
C#

using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
using PlaywrightTests.Utilities;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
[Category("version2")]
public class WebaccountTests : PageTest
{
private static LocatorClickOptions TenSLocatorTimout => new() {Timeout = 10_000};
private static LocatorAssertionsToBeVisibleOptions TenSLocatorAssertTimout => new() {Timeout = 10_000};
[SetUp]
public async Task Setup()
{
await Context.Tracing.StartAsync(new()
{
Title = $"{TestContext.CurrentContext.Test.ClassName}.{TestContext.CurrentContext.Test.Name}",
Screenshots = true,
Snapshots = true,
Sources = true
});
}
[TearDown]
public async Task TearDown()
{
await Context.Tracing.StopAsync(new()
{
Path = Path.Combine(
TestContext.CurrentContext.WorkDirectory,
"playwright-traces",
$"{TestContext.CurrentContext.Test.ClassName}.{TestContext.CurrentContext.Test.Name}.zip"
)
});
}
[Test]
public async Task Login()
{
await Auth.LoginWebAccount(Page);
}
[Test]
public async Task CheckWebAccount()
{
await Auth.LoginWebAccount(Page);
await Page.Locator("a").Filter(new() { HasText = "Shop" }).ClickAsync();
await Expect(Page.GetByText("Wartung Printer laut Vertrag")).ToBeVisibleAsync(TenSLocatorAssertTimout);
await Page.GetByRole(AriaRole.Button, new() { Name = "Add to cart" }).ClickAsync();
await Expect(Page.GetByText("The article has been added to")).ToBeVisibleAsync();
await Page.Locator("li").Filter(new() { HasText = "Cart" }).ClickAsync();
await Page.GetByRole(AriaRole.Button, new() { Name = "Request approval" }).ClickAsync();
await Expect(Page.Locator("b")).ToContainTextAsync("Waiting for approval");
await Page.GetByRole(AriaRole.Button, new() { Name = "Approve", Exact = true }).ClickAsync();
await Expect(Page.GetByText("The cart was approved and is")).ToBeVisibleAsync();
await Expect(Page.Locator("b")).ToContainTextAsync("Ready for order");
}
[Test]
public async Task CheckWebAccountTickets()
{
await Auth.LoginWebAccount(Page);
await Page.GetByRole(AriaRole.Link, new() { Name = " Tickets" }).ClickAsync();
await Expect(Page.GetByText("Ticketname")).ToBeVisibleAsync();
await Expect(Page.GetByText("Status")).ToBeVisibleAsync();
await Expect(Page.GetByText("Nummer")).ToBeVisibleAsync();
await Expect(Page.GetByText("Erstellt am")).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "12001" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "12002" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "12003" })).ToBeVisibleAsync();
}
[Test]
public async Task CheckWebAccountTicketViews()
{
await Auth.LoginWebAccount(Page);
await Page.GetByRole(AriaRole.Link, new() { Name = " Tickets" }).ClickAsync();
await Expect(Page.Locator("div").Filter(new() { HasTextRegex = new Regex("^Offen$") })).ToBeVisibleAsync();
await Expect(Page.GetByText("Abgeschlossene")).ToBeVisibleAsync();
await Expect(Page.GetByText("Ausstehende")).ToBeVisibleAsync();
await Expect(Page.GetByText("Abgelehnte")).ToBeVisibleAsync();
}
[Test]
public async Task CheckWebAccountReceipts()
{
await Auth.LoginWebAccount(Page);
await Page.Locator("a").Filter(new() { HasText = "Receipts" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "All" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Offers" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Orders" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Delivery notes" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Invoices" })).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Credit notes" })).ToBeVisibleAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "All" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Offers" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Orders" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Orders" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Invoices" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
await Page.GetByRole(AriaRole.Listitem).Filter(new() { HasText = "Credit notes" }).ClickAsync();
await Expect(Page.Locator(".grid")).ToBeVisibleAsync();
}
[Test]
public async Task CheckWebAccountTicketsCanSeeDisabled()
{
await Auth.LoginWebAccount(Page, AvailableWebAccountForTests.Alpha);
await Page.GetByRole(AriaRole.Link, new() { Name = " Tickets" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "No data to display" })).ToBeVisibleAsync(TenSLocatorAssertTimout);
await Page.Locator("div").Filter(new() { HasTextRegex = new Regex("^Abgeschlossene$") }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "No data to display" })).ToBeVisibleAsync();
}
[Test]
public async Task CheckWebAccountTicketsCanSeeEnabled()
{
await Auth.LoginWebAccount(Page, AvailableWebAccountForTests.Beta);
await Page.GetByRole(AriaRole.Link, new() { Name = " Tickets" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "Open Beta Ticket" })).ToBeVisibleAsync(TenSLocatorAssertTimout);
await Page.Locator("div").Filter(new() { HasTextRegex = new Regex("^Abgeschlossene$") }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "Closed Beta Ticket" })).ToBeVisibleAsync();
}
[Test]
public async Task CheckWebAccountTicketsAfter240101()
{
await Auth.LoginWebAccount(Page, AvailableWebAccountForTests.Gamma);
await Page.GetByRole(AriaRole.Link, new() { Name = " Tickets" }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "Open Gamma Ticket - after" })).ToBeVisibleAsync(TenSLocatorAssertTimout);
await Page.Locator("div").Filter(new() { HasTextRegex = new Regex("^Abgeschlossene$") }).ClickAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = "Closed Gamma Ticket - after" })).ToBeVisibleAsync();
}
}