-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
/
LoginStepDefinitions.cs
84 lines (66 loc) · 2.28 KB
/
LoginStepDefinitions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
namespace CleanArchitecture.Web.AcceptanceTests.StepDefinitions;
[Binding]
public sealed class LoginStepDefinitions
{
private readonly LoginPage _loginPage;
public LoginStepDefinitions(LoginPage loginPage)
{
_loginPage = loginPage;
}
[BeforeFeature("Login")]
public static async Task BeforeLoginScenario(IObjectContainer container)
{
var playwright = await Playwright.CreateAsync();
var options = new BrowserTypeLaunchOptions();
#if DEBUG
options.Headless = false;
options.SlowMo = 500;
#endif
var browser = await playwright.Chromium.LaunchAsync(options);
var page = await browser.NewPageAsync();
var loginPage = new LoginPage(browser, page);
container.RegisterInstanceAs(playwright);
container.RegisterInstanceAs(browser);
container.RegisterInstanceAs(loginPage);
}
[Given("a logged out user")]
public async Task GivenALoggedOutUser()
{
await _loginPage.GotoAsync();
}
[When("the user logs in with valid credentials")]
public async Task TheUserLogsInWithValidCredentials()
{
await _loginPage.SetEmail("administrator@localhost");
await _loginPage.SetPassword("Administrator1!");
await _loginPage.ClickLogin();
}
[Then("they log in successfully")]
public async Task TheyLogInSuccessfully()
{
var profileLinkText = await _loginPage.ProfileLinkText();
profileLinkText.Should().NotBeNull();
profileLinkText.Should().Be("Account");
}
[When("the user logs in with invalid credentials")]
public async Task TheUserLogsInWithInvalidCredentials()
{
await _loginPage.SetEmail("hacker@localhost");
await _loginPage.SetPassword("l337hax!");
await _loginPage.ClickLogin();
}
[Then("an error is displayed")]
public async Task AnErrorIsDisplayed()
{
var errorVisible = await _loginPage.InvalidLoginAttemptMessageVisible();
errorVisible.Should().BeTrue();
}
[AfterFeature]
public static async Task AfterScenario(IObjectContainer container)
{
var browser = container.Resolve<IBrowser>();
var playright = container.Resolve<IPlaywright>();
await browser.CloseAsync();
playright.Dispose();
}
}