1
+ using Allure . Commons ;
2
+ using Microsoft . Playwright ;
3
+ using NUnit . Allure . Attributes ;
4
+ using NUnit . Allure . Core ;
5
+ using NUnit . Framework ;
6
+ using PlaywrightTestFramework . Pages ;
7
+ using PlaywrightTestFramework . Reports ;
8
+ using System . IO ;
9
+
10
+
11
+ namespace PlaywrightTestFramework . Tests ;
12
+
13
+ [ AllureNUnit ]
14
+ public class TodosTests
15
+ {
16
+ private IPlaywright _playwright ;
17
+ private IBrowser _browser ;
18
+ private IPage _page ;
19
+
20
+ [ SetUp ]
21
+ public async Task SetUp ( )
22
+ {
23
+ AllureReports . Configure ( ) ;
24
+ _playwright = await Playwright . CreateAsync ( ) ;
25
+ _browser = await _playwright . Chromium . LaunchAsync (
26
+ new BrowserTypeLaunchOptions { Headless = false } ) ;
27
+ _page = await _browser . NewPageAsync ( ) ;
28
+
29
+ }
30
+ [ Test , Category ( "PortfolioDemo" ) ]
31
+ [ AllureTag ( "smoke" ) ]
32
+ [ AllureSeverity ( SeverityLevel . normal ) ]
33
+ [ AllureFeature ( "Demo Test" ) ]
34
+ public async Task AddAndToggleTodo_ShouldMarkItemCompleted ( )
35
+ {
36
+ var todo = new TodosPage ( _page ) ;
37
+ await todo . NavigateAsync ( ) ;
38
+
39
+ const string todoText = "Write awesome Playwright tests" ;
40
+ await todo . AddTodoAsync ( todoText ) ;
41
+
42
+ Assert . That ( await todo . GetFirstTodoTextAsync ( ) , Is . EqualTo ( todoText ) ) ;
43
+
44
+ await todo . ToggleFirstTodoAsync ( ) ;
45
+ var classAttr = await _page . Locator ( "ul.todo-list li:first-child" )
46
+ . GetAttributeAsync ( "class" ) ;
47
+ Assert . That ( classAttr , Does . Contain ( "completed" ) ) ;
48
+ }
49
+
50
+ [ TearDown ]
51
+ public async Task TearDown ( )
52
+ {
53
+ if ( TestContext . CurrentContext . Result . Outcome . Status ==
54
+ NUnit . Framework . Interfaces . TestStatus . Failed )
55
+ {
56
+ Directory . CreateDirectory ( "Screenshots" ) ;
57
+ var file = Path . Combine ( "Screenshots" ,
58
+ $ "{ TestContext . CurrentContext . Test . Name + DateTime . Today . ToString ( "dd MM yyyy hh mm ss ff" ) } .png") ;
59
+ await _page . ScreenshotAsync ( new PageScreenshotOptions { Path = file } ) ;
60
+ Console . WriteLine ( $ "Screenshot saved to: { Path . GetFullPath ( file ) } ") ;
61
+ AllureLifecycle . Instance . AddAttachment ( "Failure Screenshot" , "image/png" , file ) ;
62
+
63
+ }
64
+
65
+ await _browser . CloseAsync ( ) ;
66
+ _playwright . Dispose ( ) ;
67
+ }
68
+ }
0 commit comments