Replaced RetryFact with xRetry's RetryFact

This commit is contained in:
2025-11-16 01:28:01 +01:00
parent 3e07ddcd69
commit 44463681f9
8 changed files with 7 additions and 79 deletions

View File

@@ -3,6 +3,7 @@ using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.Extensions;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;

View File

@@ -18,6 +18,7 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="xRetry" />
</ItemGroup>
<ItemGroup>
<Using Include="Xunit" />

View File

@@ -2,6 +2,7 @@
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;

View File

@@ -3,6 +3,7 @@ using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using SeleniumExtras.WaitHelpers;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;

View File

@@ -3,6 +3,7 @@ using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using SeleniumExtras.WaitHelpers;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;

View File

@@ -2,6 +2,7 @@
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;

View File

@@ -1,79 +0,0 @@
using System;
using Xunit;
using Xunit.Abstractions;
using Xunit.Sdk;
namespace Berufsschule_HAM.E2ETests;
public class RetryFactAttribute(int maxRetries = 5) : FactAttribute
{
public int MaxRetries { get; } = maxRetries;
}
public class RetryTestCase : XunitTestCase
{
private int _maxRetries;
[Obsolete("Called by the de-serializer", true)]
public RetryTestCase() { }
public RetryTestCase(
IMessageSink diagnosticMessageSink,
TestMethodDisplay defaultMethodDisplay,
TestMethodDisplayOptions defaultMethodDisplayOptions,
ITestMethod testMethod,
int maxRetries)
: base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod)
{
_maxRetries = maxRetries;
}
public override async Task<RunSummary> RunAsync(
IMessageSink diagnosticMessageSink,
IMessageBus messageBus,
object[] constructorArguments,
ExceptionAggregator aggregator,
CancellationTokenSource cancellationTokenSource)
{
var summary = new RunSummary();
for (int i = 1; i <= _maxRetries; i++)
{
try
{
var result = await base.RunAsync(
diagnosticMessageSink, messageBus, constructorArguments, aggregator, cancellationTokenSource);
summary.Aggregate(result);
if (result.Failed == 0)
break; // success, stop retrying
} catch (Exception) {}
}
return summary;
}
}
public class RetryFactDiscoverer : IXunitTestCaseDiscoverer
{
private readonly IMessageSink _diagnosticMessageSink;
public RetryFactDiscoverer(IMessageSink diagnosticMessageSink)
{
_diagnosticMessageSink = diagnosticMessageSink;
}
public IEnumerable<IXunitTestCase> Discover(ITestFrameworkDiscoveryOptions discoveryOptions,
ITestMethod testMethod,
IAttributeInfo factAttribute)
{
var maxRetries = factAttribute.GetNamedArgument<int>("MaxRetries");
yield return new RetryTestCase(
_diagnosticMessageSink,
discoveryOptions.MethodDisplayOrDefault(),
discoveryOptions.MethodDisplayOptionsOrDefault(),
testMethod,
maxRetries);
}
}

View File

@@ -3,6 +3,7 @@ using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.Extensions;
using System.Diagnostics;
using xRetry;
namespace Berufsschule_HAM.E2ETests;