Skip to content

Commit 9388dad

Browse files
authored
Merge pull request #472 from Lombiq/issue/NEST-560
NEST-560: Fixing flaky Audit Trail and Workflow UI testing extensions, adding extra checks
2 parents 181524f + 4a3cb0f commit 9388dad

File tree

4 files changed

+30
-5
lines changed

4 files changed

+30
-5
lines changed

Lombiq.Tests.UI/BasicOrchardFeaturesTesting/AuditTrailFeatureTestingUITestContextExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public static Task TestAuditTrailAsync(this UITestContext context) =>
2828

2929
await context.ClickReliablyOnSubmitAsync();
3030

31+
context.SuccessMessageExists("Site settings updated successfully.");
32+
3133
var contentItemsPage = await context.GoToContentItemsPageAsync();
3234
context.RefreshCurrentAtataContext();
3335
contentItemsPage

Lombiq.Tests.UI/BasicOrchardFeaturesTesting/WorkflowsFeatureTestingUITestContextExtensions.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ public static Task TestWorkflowsAsync(this UITestContext context) =>
3232
await context.ClickAndFillInWithRetriesAsync(By.Id("IActivity_ActivityMetadata_Title"), "Content Published Trigger");
3333
await context.SetCheckboxValueAsync(By.XPath("//input[@value='Page']"));
3434
await context.ClickReliablyOnSubmitAsync();
35+
context.ShouldBeSuccess();
3536

3637
await context.ClickReliablyOnAsync(By.XPath("//button[@data-activity-type='Task']"));
3738
await context.ClickReliablyOnAsync(By.XPath("//a[contains(@href, 'NotifyTask')]"));
@@ -54,10 +55,15 @@ public static Task TestWorkflowsAsync(this UITestContext context) =>
5455
// buggy during UI testing (it won't be clicked, even if we check for its existence). This way it's
5556
// always clicked.
5657
await context.ClickReliablyOnSubmitAsync();
58+
context.ShouldBeSuccess();
59+
5760
await context.ClickReliablyOnAsync(By.XPath("//div[contains(@class, 'activity-event')]"));
5861

5962
await context.ClickReliablyOnAsync(By.XPath("//a[@title='Startup event']"));
60-
await context.ClickReliablyOnSubmitAsync();
63+
64+
// Sometimes during this step the test can fail, so we are using JavaScript to click submit, this only
65+
// happens here.
66+
await context.ClickReliablyOnSubmitAsync(withJavaScript: true);
6167

6268
context.ShouldBeSuccess("Workflow has been saved.");
6369

Lombiq.Tests.UI/CompatibilitySuppressions.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<!-- https://learn.microsoft.com/dotnet/fundamentals/package-validation/diagnostic-ids -->
33
<Suppressions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
44
<Suppression>
@@ -71,6 +71,13 @@
7171
<Right>lib/net8.0/Lombiq.Tests.UI.dll</Right>
7272
<IsBaselineSuppression>true</IsBaselineSuppression>
7373
</Suppression>
74+
<Suppression>
75+
<DiagnosticId>CP0002</DiagnosticId>
76+
<Target>M:Lombiq.Tests.UI.Extensions.FormUITestContextExtensions.ClickReliablyOnSubmitAsync(Lombiq.Tests.UI.Services.UITestContext)</Target>
77+
<Left>lib/net8.0/Lombiq.Tests.UI.dll</Left>
78+
<Right>lib/net8.0/Lombiq.Tests.UI.dll</Right>
79+
<IsBaselineSuppression>true</IsBaselineSuppression>
80+
</Suppression>
7481
<Suppression>
7582
<DiagnosticId>CP0002</DiagnosticId>
7683
<Target>M:Lombiq.Tests.UI.Extensions.FrontendUITestContextExtensions.ExecuteJavascriptTestAsync(Lombiq.Tests.UI.Services.UITestContext,System.String,Xunit.Abstractions.ITestOutputHelper)</Target>
@@ -428,4 +435,4 @@
428435
<Right>lib/net8.0/Lombiq.Tests.UI.dll</Right>
429436
<IsBaselineSuppression>true</IsBaselineSuppression>
430437
</Suppression>
431-
</Suppressions>
438+
</Suppressions>

Lombiq.Tests.UI/Extensions/FormUITestContextExtensions.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,18 @@ public static DateTime GetDatePicker(this UITestContext context, string id) =>
310310
/// <summary>
311311
/// Finds the first submit button (excluding any "Log off" buttons) and clicks on it reliably.
312312
/// </summary>
313-
public static Task ClickReliablyOnSubmitAsync(this UITestContext context) =>
314-
context.ClickReliablyOnAsync(By.XPath("//button[@type='submit' and not(ancestor::form[@action='/Users/LogOff'])]"));
313+
/// <param name="withJavaScript">When set to <see langword="true"/> it clicks the button with JavaScript.</param>
314+
public static Task ClickReliablyOnSubmitAsync(this UITestContext context, bool withJavaScript = false)
315+
{
316+
if (withJavaScript)
317+
{
318+
context.ExecuteScript("document.querySelector(\"button[type='submit']:not(form[action='/Users/LogOff'] button)\").click();");
319+
return Task.CompletedTask;
320+
}
321+
322+
return
323+
context.ClickReliablyOnAsync(By.XPath("//button[@type='submit' and not(ancestor::form[@action='/Users/LogOff'])]"));
324+
}
315325

316326
/// <summary>
317327
/// Finds the "Add New" button.

0 commit comments

Comments
 (0)