52 lines
1.7 KiB
C#
52 lines
1.7 KiB
C#
using Microsoft.Playwright.NUnit;
|
|
using Microsoft.Playwright;
|
|
|
|
namespace Tests;
|
|
|
|
[Parallelizable(ParallelScope.Self)]
|
|
[TestFixture]
|
|
public class PlaywrightTests : PageTest
|
|
{
|
|
[Test]
|
|
public async Task CanWriteAndSaveNote()
|
|
{
|
|
// 1. Navigate to the cards gallery
|
|
await Page.GotoAsync("http://localhost:8080/cards");
|
|
|
|
// 2. Wait for cards to load - looking for at least one card-cell
|
|
await Expect(Page.Locator(".card-cell").First).ToBeVisibleAsync();
|
|
|
|
// 3. Find an Agent card and click it.
|
|
var agentCard = Page.Locator(".card-cell:has(.card-category-badge.agent)").First;
|
|
await agentCard.ClickAsync();
|
|
|
|
// 4. Wait for the detail view to show the note textarea
|
|
var noteInput = Page.Locator(".note-input");
|
|
await Expect(noteInput).ToBeVisibleAsync();
|
|
|
|
// 5. Type a unique note
|
|
string uniqueNote = "Test note " + Guid.NewGuid().ToString();
|
|
await noteInput.FillAsync(uniqueNote);
|
|
|
|
// 6. Blur to trigger save
|
|
await noteInput.BlurAsync();
|
|
|
|
// 7. Wait for saving indicator to disappear (if it appeared)
|
|
var savingIndicator = Page.Locator(".saving-indicator");
|
|
if (await savingIndicator.IsVisibleAsync())
|
|
{
|
|
await Expect(savingIndicator).Not.ToBeVisibleAsync();
|
|
}
|
|
|
|
// 8. Close the detail view by clicking the backdrop
|
|
await Page.Locator(".modal-backdrop").ClickAsync();
|
|
await Expect(noteInput).Not.ToBeVisibleAsync();
|
|
|
|
// 9. Re-open the same agent card
|
|
await agentCard.ClickAsync();
|
|
|
|
// 10. Verify the note is still there
|
|
await Expect(noteInput).ToHaveValueAsync(uniqueNote);
|
|
}
|
|
}
|