diff --git a/AssemblyVersion.cs b/AssemblyVersion.cs index 244e0380..f55057c7 100644 --- a/AssemblyVersion.cs +++ b/AssemblyVersion.cs @@ -1,6 +1,6 @@ using System.Reflection; [assembly: AssemblyCopyright("Copyright © Wojciech Kotlarski 2013-2021")] -[assembly: AssemblyVersion("3.4.0")] -[assembly: AssemblyFileVersion("3.4.0")] -[assembly: AssemblyInformationalVersion("3.4.0")] +[assembly: AssemblyVersion("3.4.1")] +[assembly: AssemblyFileVersion("3.4.1")] +[assembly: AssemblyInformationalVersion("3.4.1")] diff --git a/Changelog.txt b/Changelog.txt index da5992a9..184b9ae8 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -3,6 +3,9 @@ LightBDD Version [next] ---------------------------------------- + +Version 3.4.1 +---------------------------------------- + #248 (Framework)(Change) Improved MessageListener.EnsureReceived() to return friendly message dumps for common types + #252 (LightBdd.XUnit2)(Change) Added LightBddScopeAttribute.DiagnosticMessageSink property diff --git a/QuickStart.txt b/QuickStart.txt index e1884d8c..785b4f77 100644 --- a/QuickStart.txt +++ b/QuickStart.txt @@ -1,7 +1,7 @@ LightBDD Quick Start: ##################################### -Thanks for installing LightBDD version 3.4.0! +Thanks for installing LightBDD version 3.4.1! If you are new LightBDD user, please feel free to explore the LightBDD Wiki page, especially Quick Start: https://github.com/LightBDD/LightBDD/wiki/Quick-Start If you just updated LightBDD from previous version, please read Wiki page about migrating LightBDD: https://github.com/LightBDD/LightBDD/wiki/Migrating-LightBDD-Versions diff --git a/examples/ExampleReports/FeaturesReport.html b/examples/ExampleReports/FeaturesReport.html index ddebba64..0b0755d5 100644 --- a/examples/ExampleReports/FeaturesReport.html +++ b/examples/ExampleReports/FeaturesReport.html @@ -308,64 +308,65 @@ initialized = true; applyFilter(); synchronizationCounter = 0; -}

Execution summary

Test execution start time:2021-02-19 21:33:15 UTC
Test execution end time:2021-02-19 21:33:22 UTC
Test execution time:6s 607ms
Test execution time (aggregated):24s 867ms
Number of features:10
Number of scenarios:22
Passed scenarios:11
Bypassed scenarios:1 (see details)
Failed scenarios:6 (see details)
Ignored scenarios:4 (see details)
Number of steps:121
Passed steps:93
Bypassed steps:3
Failed steps:12
Ignored steps:8
Not Run steps:5

Feature summary

FeatureScenariosPassedBypassedFailedIgnoredStepsPassedBypassedFailedIgnoredNot RunDurationAggregatedAverage
Basket feature [Story-4]210019800101s 930ms3s 042ms1s 521ms
Calculator feature [Story-8]400312814094141ms96ms24ms
Compact calculator scenarios1100033000015ms15ms15ms
Contacts management [Story-6]631202118120036ms108ms18ms
Customer journey [Story-6]10001161120214s 465ms4s 465ms4s 465ms
Invoice feature [Story-2]1000174001216ms16ms16ms
Invoice history feature [STORY-9]110004400005s 156ms5s 156ms5s 156ms
Login feature [Story-1]43010232101011s 590ms5s 343ms1s 335ms
Payment feature [Story-5]110004400006s 607ms6s 607ms6s 607ms
Product spedition feature [Story-3]1100066000015ms15ms15ms

Feature details[∞link]

Toggle:
Filter:
Categories:
[∞filtered link]

[Story-4][∞link]

In order to buy products +}

Execution summary

Test execution start time:2022-03-28 21:30:12 UTC
Test execution end time:2022-03-28 21:30:19 UTC
Test execution time:6s 783ms
Test execution time (aggregated):25s 584ms
Number of features:10
Number of scenarios:22
Passed scenarios:11
Bypassed scenarios:1 (see details)
Failed scenarios:6 (see details)
Ignored scenarios:4 (see details)
Number of steps:121
Passed steps:93
Bypassed steps:3
Failed steps:12
Ignored steps:8
Not Run steps:5

Feature summary

FeatureScenariosPassedBypassedFailedIgnoredStepsPassedBypassedFailedIgnoredNot RunDurationAggregatedAverage
Basket feature [Story-4]210019800103s 231ms3s 229ms1s 614ms
Calculator feature [Story-8]4003128140941256ms225ms56ms
Compact calculator scenarios1100033000056ms56ms56ms
Contacts management [Story-6]6312021181200311ms277ms46ms
Customer journey [Story-7]10001161120215s 350ms5s 350ms5s 350ms
Invoice feature [Story-2]1000174001256ms56ms56ms
Invoice history feature [STORY-9]110004400003s 338ms3s 338ms3s 338ms
Login feature [Story-1]43010232101016s 783ms6s 779ms1s 694ms
Payment feature [Story-5]110004400006s 253ms6s 253ms6s 253ms
Product spedition feature [Story-3]1100066000016ms16ms16ms

Feature details[∞link]

Toggle:
Filter:
Categories:
[∞filtered link]

[Story-4][∞link]

In order to buy products As a customer -I want to add products to basket

[Ticket-6] (1s 111ms)[∞link]

Sales
Passed 1. GIVEN product is out of stock (4ms)
Passed 2. WHEN customer adds it to the basket (1s 097ms)
Passed 3. THEN the product addition should be unsuccessful (<1ms)
Passed 4. AND the basket should not contain the product (<1ms)
// Step 2: Transferring 'product' to the basket

[Ticket-7] (1s 930ms)[∞link]

Sales
Passed 1. GIVEN product is in stock (4ms)
Passed 2. WHEN customer adds it to the basket (1s 915ms)
Passed 3. THEN the product addition should be successful (<1ms)
Passed 4. AND the basket should contain the product (<1ms)
Ignored 5. AND the product should be removed from stock (<1ms)
Step 5: Product removal from stock is not implemented yet
// Step 1: Added 'product' to the stock
// Step 2: Transferring 'product' to the basket

[Story-8][∞link]

In order to perform calculations correctly +I want to add products to basket

[Ticket-6] (1s 434ms)[∞link]

Sales
Passed 1. GIVEN product is out of stock (14ms)
Passed 2. WHEN customer adds it to the basket (1s 392ms)
Passed 3. THEN the product addition should be unsuccessful (1ms)
Passed 4. AND the basket should not contain the product (<1ms)
// Step 2: Transferring 'product' to the basket

[Ticket-7] (1s 794ms)[∞link]

Sales
Passed 1. GIVEN product is in stock (<1ms)
Passed 2. WHEN customer adds it to the basket (1s 787ms)
Passed 3. THEN the product addition should be successful (<1ms)
Passed 4. AND the basket should contain the product (<1ms)
Ignored 5. AND the product should be removed from stock (<1ms)
Step 5: Product removal from stock is not implemented yet
// Step 1: Added 'product' to the stock
// Step 2: Transferring 'product' to the basket

[Story-8][∞link]

In order to perform calculations correctly As a office assistant I want to use calculator for my calculations -This example presents usage of MultiAssertAttribute.

[Ticket-13] (19ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN adding "2" to "3" should give "5" (<1ms)
Failed 3. AND adding "-3" to "2" should give "expected: equals '-1', but got: '1'" (13ms)
Passed 4. AND adding "0" to "1" should give "1" (<1ms)
Failed 5. AND adding "-2" to "-1" should give "expected: equals '-3', but got: '3'" (<1ms)
Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 +This example presents usage of MultiAssertAttribute.

[Ticket-13] (154ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN adding "2" to "3" should give "5" (9ms)
Failed 3. AND adding "-3" to "2" should give "expected: equals '-1', but got: '1'" (95ms)
Passed 4. AND adding "0" to "1" should give "1" (3ms)
Failed 5. AND adding "-2" to "-1" should give "expected: equals '-3', but got: '3'" (1ms)
Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 5: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-3', but got: '3' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136

[Ticket-13] (41ms)[∞link]

Passed 1. GIVEN a calculator (1ms)
Failed 2. THEN it should add numbers (21ms)
Passed 2.1. THEN adding "2" to "3" should give "5" (<1ms)
Failed 2.2. AND adding "2" to "-3" should give "expected: equals '-1', but got: '1'" (14ms)
Failed 2.3. AND adding "0" to "1" should give "expected: equals '0', but got: '1'" (<1ms)
Ignored 3. AND it should multiply numbers (4ms)
Passed 3.1. THEN multiplying "2" by "3" should give "6" (<1ms)
Ignored 3.2. AND multiplying "2" by "-3" should give "expected: equals '-6'" (<1ms)
NotRun 3.3. AND multiplying "1" by "1" should give "<?>"
Failed 4. AND it should divide numbers (2ms)
Passed 4.1. THEN dividing "6" by "3" should give "2" (<1ms)
Failed 4.2. AND multiplying "5" by "2" should give "expected: equals '2', but got: '10'" (<1ms)
Step 2.2: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144

[Ticket-13] (40ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Failed 2. THEN it should add numbers (12ms)
Passed 2.1. THEN adding "2" to "3" should give "5" (<1ms)
Failed 2.2. AND adding "2" to "-3" should give "expected: equals '-1', but got: '1'" (<1ms)
Failed 2.3. AND adding "0" to "1" should give "expected: equals '0', but got: '1'" (<1ms)
Ignored 3. AND it should multiply numbers (10ms)
Passed 3.1. THEN multiplying "2" by "3" should give "6" (<1ms)
Ignored 3.2. AND multiplying "2" by "-3" should give "expected: equals '-6'" (<1ms)
NotRun 3.3. AND multiplying "1" by "1" should give "<?>"
Failed 4. AND it should divide numbers (10ms)
Passed 4.1. THEN dividing "6" by "3" should give "2" (<1ms)
Failed 4.2. AND multiplying "5" by "2" should give "expected: equals '2', but got: '10'" (<1ms)
Step 2.2: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 2.3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '0', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 3.2: Negative numbers are not supported yet Step 4.2: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '2', but got: '10' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136
// Step 2: It is possible to add MultiAssertAttribute on composite step
// Step 3: This step does not have MultiAssertAttribute so will stop on first exception

[Ticket-13] (19ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN dividing "6" by "2" should give "3" (<1ms)
Failed 3. AND dividing "2" by "0" should give "expected: equals '0', but got: '<DivideByZeroException>'" (13ms)
Passed 4. AND dividing "2" by "3" should give "0" (<1ms)
Failed 5. AND dividing "0" by "5" should give "expected: equals '1', but got: '0'" (<1ms)
Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '0', but got: '<DivideByZeroException>' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144
// Step 2: It is possible to add MultiAssertAttribute on composite step
// Step 3: This step does not have MultiAssertAttribute so will stop on first exception

[Ticket-13] (14ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN dividing "6" by "2" should give "3" (<1ms)
Failed 3. AND dividing "2" by "0" should give "expected: equals '0', but got: '<DivideByZeroException>'" (1ms)
Passed 4. AND dividing "2" by "3" should give "0" (<1ms)
Failed 5. AND dividing "0" by "5" should give "expected: equals '1', but got: '0'" (1ms)
Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '0', but got: '<DivideByZeroException>' + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 5: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '1', but got: '0' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136

[Ticket-13] (16ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN multiplying "6" by "2" should give "12" (2ms)
Ignored 3. AND multiplying "-1" by "2" should give "expected: equals '-2'" (<1ms)
Passed 4. AND multiplying "2" by "0" should give "0" (<1ms)
Passed 5. AND multiplying "2" by "3" should give "6" (<1ms)
Ignored 6. AND multiplying "2" by "-3" should give "expected: equals '-6'" (<1ms)
Step 3: Negative numbers are not supported yet + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144

[Ticket-13] (16ms)[∞link]

Passed 1. GIVEN a calculator (<1ms)
Passed 2. THEN multiplying "6" by "2" should give "12" (<1ms)
Ignored 3. AND multiplying "-1" by "2" should give "expected: equals '-2'" (<1ms)
Passed 4. AND multiplying "2" by "0" should give "0" (<1ms)
Passed 5. AND multiplying "2" by "3" should give "6" (<1ms)
Ignored 6. AND multiplying "2" by "-3" should give "expected: equals '-6'" (1ms)
Step 3: Negative numbers are not supported yet Step 6: Negative numbers are not supported yet

[∞link]

As LightBDD user, I want to be able to write compact scenarios, -So that I can use LightBDD for more unit-test like tests as well

(15ms)[∞link]

Passed 1. GIVEN calculator (4ms)
Passed 2. WHEN I add two numbers (<1ms)
Passed 3. THEN I should get an expected result (1ms)

[Story-6][∞link]

In order to maintain my contact book +So that I can use LightBDD for more unit-test like tests as well

(56ms)[∞link]

Passed 1. GIVEN calculator (13ms)
Passed 2. WHEN I add two numbers (1ms)
Passed 3. THEN I should get an expected result (14ms)

[Story-6][∞link]

In order to maintain my contact book As an application user -I want to add, browse and remove my contacts

[Ticket-8] (18ms)[∞link]

Passed 1. GIVEN my contact book is empty (2ms)
Passed 2. WHEN I add new contacts (<1ms)
Passed 3. THEN all contacts should be available in the contact book (4ms)

[Ticket-9] (3ms)[∞link]

Passed 1. GIVEN my contact book is filled with many contacts (1ms)
Bypassed 2. WHEN I clear it (<1ms)
Passed 3. THEN the contact book should be empty (<1ms)
Step 2: Contact book clearing is not implemented yet. Contacts are removed one by one.

[Ticket-9] (18ms)[∞link]

Passed 1. GIVEN my contact book is filled with contacts (1ms)
Passed 2. WHEN I remove one contact (<1ms)
Passed 3. THEN the contact book should not contain removed contact any more (3ms)
Passed 4. AND the contact book should contains all other contacts (<1ms)

(13ms)[∞link]

Passed 1. GIVEN my contact book is empty (<1ms)
Passed 2. AND I added contacts "<table>" (<1ms)
contacts:
EmailNamePhoneNumber
john123@gmail.comJohn111-222-333
greg22@gmail.comGreg213-444-444
emily1@gmail.comEmily111-222-5556
ka321@gmail.comKathy111-555-330
Passed 3. WHEN I request contacts sorted by name (<1ms)
Passed 4. THEN I should receive contacts "<table>" (6ms)
contacts:
#EmailNamePhoneNumber
=emily1@gmail.comEmily111-222-5556
=greg22@gmail.comGreg213-444-444
=john123@gmail.comJohn111-222-333
=ka321@gmail.comKathy111-555-330

(34ms)[∞link]

Passed 1. GIVEN I added contacts "<table>" (11ms)
contacts:
EmailNamePhoneNumber
john253@mymail.comJohn00441123344555
jenny213@mymail.comJenny112334455
jerry123@mymail.comJerry1123344556
jos#@mymail.comJosh12111333444
Passed 2. WHEN I request contacts sorted by name (<1ms)
Failed 3. THEN I should receive contacts "<table>" (7ms)
contacts:
#NameEmailPhoneNumber
!Jennyjenny213@mymail.com
112334455
matches '[0-9]{10,14}'
=Jerryjerry123@mymail.com1123344556
=Johnjohn253@mymail.com00441123344555
!Josh
jos#@mymail.com
matches '[a-z0-9.-]+@[a-z0-9.-]+'
12111333444
Step 3: System.InvalidOperationException : Parameter 'contacts' verification failed: [0].PhoneNumber: expected: matches '[0-9]{10,14}', but got: '112334455' +I want to add, browse and remove my contacts

[Ticket-8] (60ms)[∞link]

Passed 1. GIVEN my contact book is empty (11ms)
Passed 2. WHEN I add new contacts (1ms)
Passed 3. THEN all contacts should be available in the contact book (17ms)

[Ticket-9] (36ms)[∞link]

Passed 1. GIVEN my contact book is filled with many contacts (17ms)
Bypassed 2. WHEN I clear it (7ms)
Passed 3. THEN the contact book should be empty (1ms)
Step 2: Contact book clearing is not implemented yet. Contacts are removed one by one.

[Ticket-9] (9ms)[∞link]

Passed 1. GIVEN my contact book is filled with contacts (<1ms)
Passed 2. WHEN I remove one contact (<1ms)
Passed 3. THEN the contact book should not contain removed contact any more (1ms)
Passed 4. AND the contact book should contains all other contacts (<1ms)

(104ms)[∞link]

Passed 1. GIVEN my contact book is empty (1ms)
Passed 2. AND I added contacts "<table>" (45ms)
contacts:
EmailNamePhoneNumber
john123@gmail.comJohn111-222-333
greg22@gmail.comGreg213-444-444
emily1@gmail.comEmily111-222-5556
ka321@gmail.comKathy111-555-330
Passed 3. WHEN I request contacts sorted by name (1ms)
Passed 4. THEN I should receive contacts "<table>" (31ms)
contacts:
#EmailNamePhoneNumber
=emily1@gmail.comEmily111-222-5556
=greg22@gmail.comGreg213-444-444
=john123@gmail.comJohn111-222-333
=ka321@gmail.comKathy111-555-330

(29ms)[∞link]

Passed 1. GIVEN I added contacts "<table>" (<1ms)
contacts:
EmailNamePhoneNumber
john253@mymail.comJohn00441123344555
jenny213@mymail.comJenny112334455
jerry123@mymail.comJerry1123344556
jos#@mymail.comJosh12111333444
Passed 2. WHEN I request contacts sorted by name (<1ms)
Failed 3. THEN I should receive contacts "<table>" (21ms)
contacts:
#NameEmailPhoneNumber
!Jennyjenny213@mymail.com
112334455
matches '[0-9]{10,14}'
=Jerryjerry123@mymail.com1123344556
=Johnjohn253@mymail.com00441123344555
!Josh
jos#@mymail.com
matches '[a-z0-9.-]+@[a-z0-9.-]+'
12111333444
Step 3: System.InvalidOperationException : Parameter 'contacts' verification failed: [0].PhoneNumber: expected: matches '[0-9]{10,14}', but got: '112334455' [3].Email: expected: matches '[a-z0-9.-]+@[a-z0-9.-]+', but got: 'jos#@mymail.com' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136

(19ms)[∞link]

Passed 1. GIVEN my contact book is empty (<1ms)
Passed 2. AND I added contacts "<table>" (3ms)
contacts:
EmailNamePhoneNumber
john123@gmail.comJohn111-222-333
jo@hotmail.comJohn111-303-404
greg22@gmail.comGreg213-444-444
emily1@gmail.comEmily111-222-5556
ka321@gmail.comKathy111-555-330
Passed 3. WHEN I search for contacts by phone starting with "111" (<1ms)
Failed 4. THEN I should receive contacts "<table>" (8ms)
contacts:
#NameEmailPhoneNumber
=Emilyemily1@gmail.com111-222-5556
!John
john123@gmail.com
john@hotmail.com
111-222-333
=Johnjo@hotmail.com111-303-404
(missing)
<none>
Kathie
<none>
ka321@gmail.com
<none>
111-555-330
(surplus)
Kathy
<none>
ka321@gmail.com
<none>
111-555-330
<none>
Step 4: System.InvalidOperationException : Parameter 'contacts' verification failed: [1].Email: expected: equals 'john@hotmail.com', but got: 'john123@gmail.com' + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144

(35ms)[∞link]

Passed 1. GIVEN my contact book is empty (<1ms)
Passed 2. AND I added contacts "<table>" (<1ms)
contacts:
EmailNamePhoneNumber
john123@gmail.comJohn111-222-333
jo@hotmail.comJohn111-303-404
greg22@gmail.comGreg213-444-444
emily1@gmail.comEmily111-222-5556
ka321@gmail.comKathy111-555-330
Passed 3. WHEN I search for contacts by phone starting with "111" (<1ms)
Failed 4. THEN I should receive contacts "<table>" (26ms)
contacts:
#NameEmailPhoneNumber
=Emilyemily1@gmail.com111-222-5556
!John
john123@gmail.com
john@hotmail.com
111-222-333
=Johnjo@hotmail.com111-303-404
(missing)
<none>
Kathie
<none>
ka321@gmail.com
<none>
111-555-330
(surplus)
Kathy
<none>
ka321@gmail.com
<none>
111-555-330
<none>
Step 4: System.InvalidOperationException : Parameter 'contacts' verification failed: [1].Email: expected: equals 'john@hotmail.com', but got: 'john123@gmail.com' [3].Name: missing value [3].Email: missing value [3].PhoneNumber: missing value [4].Name: unexpected value [4].Email: unexpected value [4].PhoneNumber: unexpected value - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136

[Story-6][∞link]

In order to receive a product + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144

[Story-7][∞link]

In order to receive a product As an application user -I want to go through entire customer journey

[Ticket-12] (4s 465ms)[∞link]

Passed 1. GIVEN customer is logged in (1s 584ms)
Passed 1.1. GIVEN the user is about to login (<1ms)
Passed 1.2. AND the user entered valid login (<1ms)
Passed 1.3. AND the user entered valid password (<1ms)
Passed 1.4. WHEN the user clicks login button (1s 575ms)
Passed 1.5. THEN the login operation should be successful (<1ms)
Bypassed 2. WHEN customer adds products to basket (1s 126ms)
Passed 2.1. GIVEN product "wooden desk" is in stock (<1ms)
Bypassed 2.2. WHEN customer adds product "wooden desk" to the basket (1s 123ms)
Passed 2.3. THEN the product addition should be successful (<1ms)
Passed 3. AND customer pays for products in basket (1s 746ms)
Passed 3.1. WHEN customer requests to pay (1s 745ms)
Passed 3.2. THEN payment should be successful (<1ms)
Ignored 4. THEN customer should receive order email (2ms)
Ignored 4.1. THEN customer should receive invoice (<1ms)
NotRun 4.2. AND customer should receive order confirmation
Step 2.2: Until proper api is implemented, product is added directly to the DB. +I want to go through entire customer journey

[Ticket-12] (5s 350ms)[∞link]

Passed 1. GIVEN customer is logged in (1s 786ms)
Passed 1.1. GIVEN the user is about to login (2ms)
Passed 1.2. AND the user entered valid login (<1ms)
Passed 1.3. AND the user entered valid password (<1ms)
Passed 1.4. WHEN the user clicks login button (1s 762ms)
Passed 1.5. THEN the login operation should be successful (<1ms)
Bypassed 2. WHEN customer adds products to basket (1s 891ms)
Passed 2.1. GIVEN product "wooden desk" is in stock (<1ms)
Bypassed 2.2. WHEN customer adds product "wooden desk" to the basket (1s 884ms)
Passed 2.3. THEN the product addition should be successful (<1ms)
Passed 3. AND customer pays for products in basket (1s 645ms)
Passed 3.1. WHEN customer requests to pay (1s 644ms)
Passed 3.2. THEN payment should be successful (<1ms)
Ignored 4. THEN customer should receive order email (6ms)
Ignored 4.1. THEN customer should receive invoice (1ms)
NotRun 4.2. AND customer should receive order confirmation
Step 2.2: Until proper api is implemented, product is added directly to the DB. Step 4.1: Not implemented yet

[Story-2][∞link]

In order to pay for products As a customer -I want to receive invoice for bought items

[Ticket-4] (16ms)[∞link]

Sales
Passed 1. GIVEN product "wooden desk" is available in product storage (<1ms)
Passed 2. AND product "wooden shelf" is available in product storage (<1ms)
Passed 3. WHEN customer buys product "wooden desk" (<1ms)
Passed 4. AND customer buys product "wooden shelf" (<1ms)
Ignored 5. THEN an invoice should be sent to the customer (<1ms)
NotRun 6. AND the invoice should contain product "wooden desk" with price of "£62.00"
NotRun 7. AND the invoice should contain product "wooden shelf" with price of "£37.00"
Step 5: Not implemented yet

[STORY-9][∞link]

In order to see all payment details +I want to receive invoice for bought items

[Ticket-4] (56ms)[∞link]

Sales
Passed 1. GIVEN product "wooden desk" is available in product storage (4ms)
Passed 2. AND product "wooden shelf" is available in product storage (1ms)
Passed 3. WHEN customer buys product "wooden desk" (<1ms)
Passed 4. AND customer buys product "wooden shelf" (<1ms)
Ignored 5. THEN an invoice should be sent to the customer (9ms)
NotRun 6. AND the invoice should contain product "wooden desk" with price of "£62.00"
NotRun 7. AND the invoice should contain product "wooden shelf" with price of "£37.00"
Step 5: Not implemented yet

[STORY-9][∞link]

In order to see all payment details As a customer I want to browse historical invoices -Example usage of fluent scenarios

[Ticket-14] (5s 156ms)[∞link]

Passed 1. GIVEN invoice "Invoice-1" (1s 686ms)
Passed 2. AND invoice "Invoice-2" (1s 914ms)
Passed 3. WHEN I request all historical invoices (1s 543ms)
Passed 4. THEN I should see invoices "Invoice-1, Invoice-2" (<1ms)

[Story-1][∞link]

In order to access personal data +Example usage of fluent scenarios

[Ticket-14] (3s 338ms)[∞link]

Passed 1. GIVEN invoice "Invoice-1" (1s 021ms)
Passed 2. AND invoice "Invoice-2" (1s 023ms)
Passed 3. WHEN I request all historical invoices (1s 267ms)
Passed 4. THEN I should see invoices "Invoice-1, Invoice-2" (<1ms)

[Story-1][∞link]

In order to access personal data As an user -I want to login into system

[Ticket-3] (1s 142ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (<1ms)
Passed 2. AND the user entered anonymous login (<1ms)
Passed 3. WHEN the user clicks login button (1s 124ms)
Failed 4. THEN the login operation should be successful (16ms)
NotRun 5. AND a welcome message containing user name should be returned
Step 4: Xunit.Sdk.TrueException : Login should succeeded - Expected: True - Actual: False - at Example.LightBDD.XUnit2.Features.Login_feature.Then_the_login_operation_should_be_successful() in d:\dev\LightBDD\examples\Example.LightBDD.XUnit2\Features\Login_feature.Steps.cs:line 56 - at LightBDD.Framework.Scenarios.Implementation.BasicStepCompiler.StepExecutor.Execute(Object context, Object[] args) in d:\dev\LightBDD\src\LightBDD.Framework\Scenarios\Implementation\BasicStepCompiler.cs:line 102
// Step 2: Presentation of failed scenario

[Ticket-1] (1s 590ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (4ms)
Passed 2. AND the user entered valid login (<1ms)
Passed 3. AND the user entered valid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 575ms)
Passed 5. THEN the login operation should be successful (<1ms)
Passed 6. AND a welcome message containing user name should be returned (<1ms)

[Ticket-2] (1s 297ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (4ms)
Passed 2. AND the user entered invalid login (<1ms)
Passed 3. AND the user entered valid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 282ms)
Passed 5. THEN the login operation should be unsuccessful (<1ms)
Passed 6. AND an invalid login or password error message should be returned (<1ms)

[Ticket-2] (1s 312ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (4ms)
Passed 2. AND the user entered valid login (<1ms)
Passed 3. AND the user entered invalid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 297ms)
Passed 5. THEN the login operation should be unsuccessful (<1ms)
Passed 6. AND an invalid login or password error message should be returned (<1ms)

[Story-5][∞link]

In order to get desired products +I want to login into system

[Ticket-3] (2s 008ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (14ms)
Passed 2. AND the user entered anonymous login (4ms)
Passed 3. WHEN the user clicks login button (1s 932ms)
Failed 4. THEN the login operation should be successful (30ms)
NotRun 5. AND a welcome message containing user name should be returned
Step 4: NUnit.Framework.AssertionException : Login should succeeded + Expected: True + But was: False + + at Example.LightBDD.NUnit3.Features.Login_feature.Then_the_login_operation_should_be_successful() in d:\dev\LightBDD\examples\Example.LightBDD.NUnit3\Features\Login_feature.Steps.cs:line 57 + at LightBDD.Framework.Scenarios.Implementation.BasicStepCompiler.StepExecutor.Execute(Object context, Object[] args) in d:\dev\LightBDD\src\LightBDD.Framework\Scenarios\Implementation\BasicStepCompiler.cs:line 102
// Step 2: Presentation of failed scenario

[Ticket-1] (1s 777ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (<1ms)
Passed 2. AND the user entered valid login (<1ms)
Passed 3. AND the user entered valid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 775ms)
Passed 5. THEN the login operation should be successful (<1ms)
Passed 6. AND a welcome message containing user name should be returned (<1ms)

[Ticket-2] (1s 460ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (<1ms)
Passed 2. AND the user entered invalid login (<1ms)
Passed 3. AND the user entered valid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 459ms)
Passed 5. THEN the login operation should be unsuccessful (<1ms)
Passed 6. AND an invalid login or password error message should be returned (<1ms)

[Ticket-2] (1s 533ms)[∞link]

Security
Passed 1. GIVEN the user is about to login (<1ms)
Passed 2. AND the user entered valid login (<1ms)
Passed 3. AND the user entered invalid password (<1ms)
Passed 4. WHEN the user clicks login button (1s 532ms)
Passed 5. THEN the login operation should be unsuccessful (<1ms)
Passed 6. AND an invalid login or password error message should be returned (<1ms)

[Story-5][∞link]

In order to get desired products As a customer -I want to pay for products in basket

[Ticket-10] [Ticket-11] (6s 607ms)[∞link]

Passed 1. GIVEN customer has some products in basket (1s 935ms)
Passed 2. AND customer has enough money to pay for products (1s 343ms)
Passed 3. WHEN customer requests to pay (1s 482ms)
Passed 4. THEN payment should be successful (1s 836ms)

[Story-3][∞link]

In order to deliver products to customer effectively +I want to pay for products in basket

[Ticket-10] [Ticket-11] (6s 253ms)[∞link]

Passed 1. GIVEN customer has some products in basket (1s 442ms)
Passed 2. AND customer has enough money to pay for products (1s 781ms)
Passed 3. WHEN customer requests to pay (1s 755ms)
Passed 4. THEN payment should be successful (1s 260ms)

[Story-3][∞link]

In order to deliver products to customer effectively As a spedition manager -I want to dispatch products to customer as soon as the payment is finalized

[Ticket-5] (15ms)[∞link]

Delivery, Sales
Passed 1. GIVEN There is an active customer with id "ABC-123" (<1ms)
Passed 2. AND The customer has product "wooden shelf" in basket (<1ms)
Passed 3. AND The customer has product "wooden desk" in basket (<1ms)
Passed 4. WHEN The customer payment finalizes (<1ms)
Passed 5. THEN Product "wooden shelf" should be dispatched to the customer (<1ms)
Passed 6. AND Product "wooden desk" should be dispatched to the customer (<1ms)

\ No newline at end of file +I want to dispatch products to customer as soon as the payment is finalized

[Ticket-5] (16ms)[∞link]

Delivery, Sales
Passed 1. GIVEN There is an active customer with id "ABC-123" (<1ms)
Passed 2. AND The customer has product "wooden shelf" in basket (<1ms)
Passed 3. AND The customer has product "wooden desk" in basket (<1ms)
Passed 4. WHEN The customer payment finalizes (<1ms)
Passed 5. THEN Product "wooden shelf" should be dispatched to the customer (<1ms)
Passed 6. AND Product "wooden desk" should be dispatched to the customer (<1ms)

\ No newline at end of file diff --git a/examples/ExampleReports/FeaturesReport.txt b/examples/ExampleReports/FeaturesReport.txt index 5de839ed..346b844b 100644 --- a/examples/ExampleReports/FeaturesReport.txt +++ b/examples/ExampleReports/FeaturesReport.txt @@ -1,8 +1,8 @@ Summary: - Test execution start time : 2021-02-19 21:33:15 UTC - Test execution end time : 2021-02-19 21:33:22 UTC - Test execution time : 6s 607ms - Test execution time (aggregated): 24s 867ms + Test execution start time : 2022-03-28 21:30:12 UTC + Test execution end time : 2022-03-28 21:30:19 UTC + Test execution time : 6s 783ms + Test execution time (aggregated): 25s 584ms Number of features : 10 Number of scenarios : 22 Passed scenarios : 11 @@ -21,19 +21,19 @@ Feature: Basket feature [Story-4] As a customer I want to add products to basket - Scenario: No product in stock [Ticket-6] - Passed (1s 111ms) + Scenario: No product in stock [Ticket-6] - Passed (1s 434ms) Categories: Sales - Step 1: GIVEN product is out of stock - Passed (4ms) - Step 2: WHEN customer adds it to the basket - Passed (1s 097ms) - Step 3: THEN the product addition should be unsuccessful - Passed (<1ms) + Step 1: GIVEN product is out of stock - Passed (14ms) + Step 2: WHEN customer adds it to the basket - Passed (1s 392ms) + Step 3: THEN the product addition should be unsuccessful - Passed (1ms) Step 4: AND the basket should not contain the product - Passed (<1ms) Comments: Step 2: Transferring 'product' to the basket - Scenario: Successful addition [Ticket-7] - Ignored (1s 930ms) + Scenario: Successful addition [Ticket-7] - Ignored (1s 794ms) Categories: Sales - Step 1: GIVEN product is in stock - Passed (4ms) - Step 2: WHEN customer adds it to the basket - Passed (1s 915ms) + Step 1: GIVEN product is in stock - Passed (<1ms) + Step 2: WHEN customer adds it to the basket - Passed (1s 787ms) Step 3: THEN the product addition should be successful - Passed (<1ms) Step 4: AND the basket should contain the product - Passed (<1ms) Step 5: AND the product should be removed from stock - Ignored (<1ms) @@ -50,69 +50,69 @@ Feature: Calculator feature [Story-8] This example presents usage of MultiAssertAttribute. - Scenario: Adding numbers [Ticket-13] - Failed (19ms) + Scenario: Adding numbers [Ticket-13] - Failed (154ms) Step 1: GIVEN a calculator - Passed (<1ms) - Step 2: THEN adding "2" to "3" should give "5" - Passed (<1ms) - Step 3: AND adding "-3" to "2" should give "expected: equals '-1', but got: '1'" - Failed (13ms) - Step 4: AND adding "0" to "1" should give "1" - Passed (<1ms) - Step 5: AND adding "-2" to "-1" should give "expected: equals '-3', but got: '3'" - Failed (<1ms) + Step 2: THEN adding "2" to "3" should give "5" - Passed (9ms) + Step 3: AND adding "-3" to "2" should give "expected: equals '-1', but got: '1'" - Failed (95ms) + Step 4: AND adding "0" to "1" should give "1" - Passed (3ms) + Step 5: AND adding "-2" to "-1" should give "expected: equals '-3', but got: '3'" - Failed (1ms) Details: Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 5: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-3', but got: '3' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 - Scenario: Composite operations [Ticket-13] - Failed (41ms) - Step 1: GIVEN a calculator - Passed (1ms) - Step 2: THEN it should add numbers - Failed (21ms) + Scenario: Composite operations [Ticket-13] - Failed (40ms) + Step 1: GIVEN a calculator - Passed (<1ms) + Step 2: THEN it should add numbers - Failed (12ms) Step 2.1: THEN adding "2" to "3" should give "5" - Passed (<1ms) - Step 2.2: AND adding "2" to "-3" should give "expected: equals '-1', but got: '1'" - Failed (14ms) + Step 2.2: AND adding "2" to "-3" should give "expected: equals '-1', but got: '1'" - Failed (<1ms) Step 2.3: AND adding "0" to "1" should give "expected: equals '0', but got: '1'" - Failed (<1ms) - Step 3: AND it should multiply numbers - Ignored (4ms) + Step 3: AND it should multiply numbers - Ignored (10ms) Step 3.1: THEN multiplying "2" by "3" should give "6" - Passed (<1ms) Step 3.2: AND multiplying "2" by "-3" should give "expected: equals '-6'" - Ignored (<1ms) Step 3.3: AND multiplying "1" by "1" should give "" - NotRun - Step 4: AND it should divide numbers - Failed (2ms) + Step 4: AND it should divide numbers - Failed (10ms) Step 4.1: THEN dividing "6" by "3" should give "2" - Passed (<1ms) Step 4.2: AND multiplying "5" by "2" should give "expected: equals '2', but got: '10'" - Failed (<1ms) Details: Step 2.2: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '-1', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 2.3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '0', but got: '1' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 3.2: Negative numbers are not supported yet Step 4.2: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '2', but got: '10' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Comments: Step 2: It is possible to add MultiAssertAttribute on composite step Step 3: This step does not have MultiAssertAttribute so will stop on first exception - Scenario: Dividing numbers [Ticket-13] - Failed (19ms) + Scenario: Dividing numbers [Ticket-13] - Failed (14ms) Step 1: GIVEN a calculator - Passed (<1ms) Step 2: THEN dividing "6" by "2" should give "3" - Passed (<1ms) - Step 3: AND dividing "2" by "0" should give "expected: equals '0', but got: ''" - Failed (13ms) + Step 3: AND dividing "2" by "0" should give "expected: equals '0', but got: ''" - Failed (1ms) Step 4: AND dividing "2" by "3" should give "0" - Passed (<1ms) - Step 5: AND dividing "0" by "5" should give "expected: equals '1', but got: '0'" - Failed (<1ms) + Step 5: AND dividing "0" by "5" should give "expected: equals '1', but got: '0'" - Failed (1ms) Details: Step 3: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '0', but got: '' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Step 5: System.InvalidOperationException : Parameter 'result' verification failed: expected: equals '1', but got: '0' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 Scenario: Multiplying numbers [Ticket-13] - Ignored (16ms) Step 1: GIVEN a calculator - Passed (<1ms) - Step 2: THEN multiplying "6" by "2" should give "12" - Passed (2ms) + Step 2: THEN multiplying "6" by "2" should give "12" - Passed (<1ms) Step 3: AND multiplying "-1" by "2" should give "expected: equals '-2'" - Ignored (<1ms) Step 4: AND multiplying "2" by "0" should give "0" - Passed (<1ms) Step 5: AND multiplying "2" by "3" should give "6" - Passed (<1ms) - Step 6: AND multiplying "2" by "-3" should give "expected: equals '-6'" - Ignored (<1ms) + Step 6: AND multiplying "2" by "-3" should give "expected: equals '-6'" - Ignored (1ms) Details: Step 3: Negative numbers are not supported yet Step 6: Negative numbers are not supported yet @@ -122,37 +122,37 @@ Feature: Compact calculator scenarios I want to be able to write compact scenarios, So that I can use LightBDD for more unit-test like tests as well - Scenario: Adding numbers - Passed (15ms) - Step 1: GIVEN calculator - Passed (4ms) - Step 2: WHEN I add two numbers - Passed (<1ms) - Step 3: THEN I should get an expected result - Passed (1ms) + Scenario: Adding numbers - Passed (56ms) + Step 1: GIVEN calculator - Passed (13ms) + Step 2: WHEN I add two numbers - Passed (1ms) + Step 3: THEN I should get an expected result - Passed (14ms) Feature: Contacts management [Story-6] In order to maintain my contact book As an application user I want to add, browse and remove my contacts - Scenario: Contact book should allow me to add multiple contacts [Ticket-8] - Passed (18ms) - Step 1: GIVEN my contact book is empty - Passed (2ms) - Step 2: WHEN I add new contacts - Passed (<1ms) - Step 3: THEN all contacts should be available in the contact book - Passed (4ms) + Scenario: Contact book should allow me to add multiple contacts [Ticket-8] - Passed (60ms) + Step 1: GIVEN my contact book is empty - Passed (11ms) + Step 2: WHEN I add new contacts - Passed (1ms) + Step 3: THEN all contacts should be available in the contact book - Passed (17ms) - Scenario: Contact book should allow me to remove all contacts [Ticket-9] - Bypassed (3ms) - Step 1: GIVEN my contact book is filled with many contacts - Passed (1ms) - Step 2: WHEN I clear it - Bypassed (<1ms) - Step 3: THEN the contact book should be empty - Passed (<1ms) + Scenario: Contact book should allow me to remove all contacts [Ticket-9] - Bypassed (36ms) + Step 1: GIVEN my contact book is filled with many contacts - Passed (17ms) + Step 2: WHEN I clear it - Bypassed (7ms) + Step 3: THEN the contact book should be empty - Passed (1ms) Details: Step 2: Contact book clearing is not implemented yet. Contacts are removed one by one. - Scenario: Contact book should allow me to remove contacts [Ticket-9] - Passed (18ms) - Step 1: GIVEN my contact book is filled with contacts - Passed (1ms) + Scenario: Contact book should allow me to remove contacts [Ticket-9] - Passed (9ms) + Step 1: GIVEN my contact book is filled with contacts - Passed (<1ms) Step 2: WHEN I remove one contact - Passed (<1ms) - Step 3: THEN the contact book should not contain removed contact any more - Passed (3ms) + Step 3: THEN the contact book should not contain removed contact any more - Passed (1ms) Step 4: AND the contact book should contains all other contacts - Passed (<1ms) - Scenario: Displaying contacts alphabetically - Passed (13ms) - Step 1: GIVEN my contact book is empty - Passed (<1ms) - Step 2: AND I added contacts "" - Passed (<1ms) + Scenario: Displaying contacts alphabetically - Passed (104ms) + Step 1: GIVEN my contact book is empty - Passed (1ms) + Step 2: AND I added contacts "
" - Passed (45ms) contacts: +-----------------+-----+------------+ |Email |Name |PhoneNumber | @@ -162,8 +162,8 @@ Feature: Contacts management [Story-6] |emily1@gmail.com |Emily|111-222-5556| |ka321@gmail.com |Kathy|111-555-330 | +-----------------+-----+------------+ - Step 3: WHEN I request contacts sorted by name - Passed (<1ms) - Step 4: THEN I should receive contacts "
" - Passed (6ms) + Step 3: WHEN I request contacts sorted by name - Passed (1ms) + Step 4: THEN I should receive contacts "
" - Passed (31ms) contacts: +-+-----------------+-----+------------+ |#|Email |Name |PhoneNumber | @@ -174,8 +174,8 @@ Feature: Contacts management [Story-6] |=|ka321@gmail.com |Kathy|111-555-330 | +-+-----------------+-----+------------+ - Scenario: Normalizing contact details - Failed (34ms) - Step 1: GIVEN I added contacts "
" - Passed (11ms) + Scenario: Normalizing contact details - Failed (29ms) + Step 1: GIVEN I added contacts "
" - Passed (<1ms) contacts: +-------------------+-----+--------------+ |Email |Name |PhoneNumber | @@ -186,7 +186,7 @@ Feature: Contacts management [Story-6] |jos#@mymail.com |Josh |12111333444 | +-------------------+-----+--------------+ Step 2: WHEN I request contacts sorted by name - Passed (<1ms) - Step 3: THEN I should receive contacts "
" - Failed (7ms) + Step 3: THEN I should receive contacts "
" - Failed (21ms) contacts: +-+-----+-------------------------------------------------+--------------------------------+ |#|Name |Email |PhoneNumber | @@ -199,12 +199,12 @@ Feature: Contacts management [Story-6] Details: Step 3: System.InvalidOperationException : Parameter 'contacts' verification failed: [0].PhoneNumber: expected: matches '[0-9]{10,14}', but got: '112334455' [3].Email: expected: matches '[a-z0-9.-]+@[a-z0-9.-]+', but got: 'jos#@mymail.com' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 - Scenario: Searching for contacts by phone - Failed (19ms) + Scenario: Searching for contacts by phone - Failed (35ms) Step 1: GIVEN my contact book is empty - Passed (<1ms) - Step 2: AND I added contacts "
" - Passed (3ms) + Step 2: AND I added contacts "
" - Passed (<1ms) contacts: +-----------------+-----+------------+ |Email |Name |PhoneNumber | @@ -216,7 +216,7 @@ Feature: Contacts management [Story-6] |ka321@gmail.com |Kathy|111-555-330 | +-----------------+-----+------------+ Step 3: WHEN I search for contacts by phone starting with "111" - Passed (<1ms) - Step 4: THEN I should receive contacts "
" - Failed (8ms) + Step 4: THEN I should receive contacts "
" - Failed (26ms) contacts: +-+-------------+----------------------------------+------------------+ |#|Name |Email |PhoneNumber | @@ -235,30 +235,30 @@ Feature: Contacts management [Story-6] [4].Name: unexpected value [4].Email: unexpected value [4].PhoneNumber: unexpected value - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 -Feature: Customer journey [Story-6] +Feature: Customer journey [Story-7] In order to receive a product As an application user I want to go through entire customer journey - Scenario: Ordering products [Ticket-12] - Ignored (4s 465ms) - Step 1: GIVEN customer is logged in - Passed (1s 584ms) - Step 1.1: GIVEN the user is about to login - Passed (<1ms) + Scenario: Ordering products [Ticket-12] - Ignored (5s 350ms) + Step 1: GIVEN customer is logged in - Passed (1s 786ms) + Step 1.1: GIVEN the user is about to login - Passed (2ms) Step 1.2: AND the user entered valid login - Passed (<1ms) Step 1.3: AND the user entered valid password - Passed (<1ms) - Step 1.4: WHEN the user clicks login button - Passed (1s 575ms) + Step 1.4: WHEN the user clicks login button - Passed (1s 762ms) Step 1.5: THEN the login operation should be successful - Passed (<1ms) - Step 2: WHEN customer adds products to basket - Bypassed (1s 126ms) + Step 2: WHEN customer adds products to basket - Bypassed (1s 891ms) Step 2.1: GIVEN product "wooden desk" is in stock - Passed (<1ms) - Step 2.2: WHEN customer adds product "wooden desk" to the basket - Bypassed (1s 123ms) + Step 2.2: WHEN customer adds product "wooden desk" to the basket - Bypassed (1s 884ms) Step 2.3: THEN the product addition should be successful - Passed (<1ms) - Step 3: AND customer pays for products in basket - Passed (1s 746ms) - Step 3.1: WHEN customer requests to pay - Passed (1s 745ms) + Step 3: AND customer pays for products in basket - Passed (1s 645ms) + Step 3.1: WHEN customer requests to pay - Passed (1s 644ms) Step 3.2: THEN payment should be successful - Passed (<1ms) - Step 4: THEN customer should receive order email - Ignored (2ms) - Step 4.1: THEN customer should receive invoice - Ignored (<1ms) + Step 4: THEN customer should receive order email - Ignored (6ms) + Step 4.1: THEN customer should receive invoice - Ignored (1ms) Step 4.2: AND customer should receive order confirmation - NotRun Details: Step 2.2: Until proper api is implemented, product is added directly to the DB. @@ -269,13 +269,13 @@ Feature: Invoice feature [Story-2] As a customer I want to receive invoice for bought items - Scenario: Receiving invoice for products [Ticket-4] - Ignored (16ms) + Scenario: Receiving invoice for products [Ticket-4] - Ignored (56ms) Categories: Sales - Step 1: GIVEN product "wooden desk" is available in product storage - Passed (<1ms) - Step 2: AND product "wooden shelf" is available in product storage - Passed (<1ms) + Step 1: GIVEN product "wooden desk" is available in product storage - Passed (4ms) + Step 2: AND product "wooden shelf" is available in product storage - Passed (1ms) Step 3: WHEN customer buys product "wooden desk" - Passed (<1ms) Step 4: AND customer buys product "wooden shelf" - Passed (<1ms) - Step 5: THEN an invoice should be sent to the customer - Ignored (<1ms) + Step 5: THEN an invoice should be sent to the customer - Ignored (9ms) Step 6: AND the invoice should contain product "wooden desk" with price of "£62.00" - NotRun Step 7: AND the invoice should contain product "wooden shelf" with price of "£37.00" - NotRun Details: @@ -288,10 +288,10 @@ Feature: Invoice history feature [STORY-9] Example usage of fluent scenarios - Scenario: Browsing invoices [Ticket-14] - Passed (5s 156ms) - Step 1: GIVEN invoice "Invoice-1" - Passed (1s 686ms) - Step 2: AND invoice "Invoice-2" - Passed (1s 914ms) - Step 3: WHEN I request all historical invoices - Passed (1s 543ms) + Scenario: Browsing invoices [Ticket-14] - Passed (3s 338ms) + Step 1: GIVEN invoice "Invoice-1" - Passed (1s 021ms) + Step 2: AND invoice "Invoice-2" - Passed (1s 023ms) + Step 3: WHEN I request all historical invoices - Passed (1s 267ms) Step 4: THEN I should see invoices "Invoice-1, Invoice-2" - Passed (<1ms) Feature: Login feature [Story-1] @@ -299,46 +299,47 @@ Feature: Login feature [Story-1] As an user I want to login into system - Scenario: Anonymous login name should allow to log in [Ticket-3] - Failed (1s 142ms) + Scenario: Anonymous login name should allow to log in [Ticket-3] - Failed (2s 008ms) Categories: Security - Step 1: GIVEN the user is about to login - Passed (<1ms) - Step 2: AND the user entered anonymous login - Passed (<1ms) - Step 3: WHEN the user clicks login button - Passed (1s 124ms) - Step 4: THEN the login operation should be successful - Failed (16ms) + Step 1: GIVEN the user is about to login - Passed (14ms) + Step 2: AND the user entered anonymous login - Passed (4ms) + Step 3: WHEN the user clicks login button - Passed (1s 932ms) + Step 4: THEN the login operation should be successful - Failed (30ms) Step 5: AND a welcome message containing user name should be returned - NotRun Details: - Step 4: Xunit.Sdk.TrueException : Login should succeeded - Expected: True - Actual: False - at Example.LightBDD.XUnit2.Features.Login_feature.Then_the_login_operation_should_be_successful() in d:\dev\LightBDD\examples\Example.LightBDD.XUnit2\Features\Login_feature.Steps.cs:line 56 + Step 4: NUnit.Framework.AssertionException : Login should succeeded + Expected: True + But was: False + + at Example.LightBDD.NUnit3.Features.Login_feature.Then_the_login_operation_should_be_successful() in d:\dev\LightBDD\examples\Example.LightBDD.NUnit3\Features\Login_feature.Steps.cs:line 57 at LightBDD.Framework.Scenarios.Implementation.BasicStepCompiler.StepExecutor.Execute(Object context, Object[] args) in d:\dev\LightBDD\src\LightBDD.Framework\Scenarios\Implementation\BasicStepCompiler.cs:line 102 Comments: Step 2: Presentation of failed scenario - Scenario: Successful login [Ticket-1] - Passed (1s 590ms) + Scenario: Successful login [Ticket-1] - Passed (1s 777ms) Categories: Security - Step 1: GIVEN the user is about to login - Passed (4ms) + Step 1: GIVEN the user is about to login - Passed (<1ms) Step 2: AND the user entered valid login - Passed (<1ms) Step 3: AND the user entered valid password - Passed (<1ms) - Step 4: WHEN the user clicks login button - Passed (1s 575ms) + Step 4: WHEN the user clicks login button - Passed (1s 775ms) Step 5: THEN the login operation should be successful - Passed (<1ms) Step 6: AND a welcome message containing user name should be returned - Passed (<1ms) - Scenario: Wrong login provided causes login to fail [Ticket-2] - Passed (1s 297ms) + Scenario: Wrong login provided causes login to fail [Ticket-2] - Passed (1s 460ms) Categories: Security - Step 1: GIVEN the user is about to login - Passed (4ms) + Step 1: GIVEN the user is about to login - Passed (<1ms) Step 2: AND the user entered invalid login - Passed (<1ms) Step 3: AND the user entered valid password - Passed (<1ms) - Step 4: WHEN the user clicks login button - Passed (1s 282ms) + Step 4: WHEN the user clicks login button - Passed (1s 459ms) Step 5: THEN the login operation should be unsuccessful - Passed (<1ms) Step 6: AND an invalid login or password error message should be returned - Passed (<1ms) - Scenario: Wrong password provided causes login to fail [Ticket-2] - Passed (1s 312ms) + Scenario: Wrong password provided causes login to fail [Ticket-2] - Passed (1s 533ms) Categories: Security - Step 1: GIVEN the user is about to login - Passed (4ms) + Step 1: GIVEN the user is about to login - Passed (<1ms) Step 2: AND the user entered valid login - Passed (<1ms) Step 3: AND the user entered invalid password - Passed (<1ms) - Step 4: WHEN the user clicks login button - Passed (1s 297ms) + Step 4: WHEN the user clicks login button - Passed (1s 532ms) Step 5: THEN the login operation should be unsuccessful - Passed (<1ms) Step 6: AND an invalid login or password error message should be returned - Passed (<1ms) @@ -347,18 +348,18 @@ Feature: Payment feature [Story-5] As a customer I want to pay for products in basket - Scenario: Successful payment [Ticket-10][Ticket-11] - Passed (6s 607ms) - Step 1: GIVEN customer has some products in basket - Passed (1s 935ms) - Step 2: AND customer has enough money to pay for products - Passed (1s 343ms) - Step 3: WHEN customer requests to pay - Passed (1s 482ms) - Step 4: THEN payment should be successful - Passed (1s 836ms) + Scenario: Successful payment [Ticket-10][Ticket-11] - Passed (6s 253ms) + Step 1: GIVEN customer has some products in basket - Passed (1s 442ms) + Step 2: AND customer has enough money to pay for products - Passed (1s 781ms) + Step 3: WHEN customer requests to pay - Passed (1s 755ms) + Step 4: THEN payment should be successful - Passed (1s 260ms) Feature: Product spedition feature [Story-3] In order to deliver products to customer effectively As a spedition manager I want to dispatch products to customer as soon as the payment is finalized - Scenario: Should dispatch product after payment is finalized [Ticket-5] - Passed (15ms) + Scenario: Should dispatch product after payment is finalized [Ticket-5] - Passed (16ms) Categories: Delivery, Sales Step 1: GIVEN There is an active customer with id "ABC-123" - Passed (<1ms) Step 2: AND The customer has product "wooden shelf" in basket - Passed (<1ms) diff --git a/examples/ExampleReports/FeaturesReport.xml b/examples/ExampleReports/FeaturesReport.xml index 160f2406..de5816ef 100644 --- a/examples/ExampleReports/FeaturesReport.xml +++ b/examples/ExampleReports/FeaturesReport.xml @@ -1,72 +1,72 @@ - + - + - + - + As LightBDD user, I want to be able to write compact scenarios, So that I can use LightBDD for more unit-test like tests as well - + - + - + - + - +
- + - + <table> @@ -495,9 +504,9 @@ I want to add, browse and remove my contacts - + - + <table> @@ -529,14 +538,14 @@ I want to add, browse and remove my contacts - + - + Step 3: System.InvalidOperationException : Parameter 'contacts' verification failed: [0].PhoneNumber: expected: matches '[0-9]{10,14}', but got: '112334455' [3].Email: expected: matches '[a-z0-9.-]+@[a-z0-9.-]+', but got: 'jos#@mymail.com' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 <table> @@ -570,15 +579,15 @@ I want to add, browse and remove my contacts Step 3: System.InvalidOperationException : Parameter 'contacts' verification failed: [0].PhoneNumber: expected: matches '[0-9]{10,14}', but got: '112334455' [3].Email: expected: matches '[a-z0-9.-]+@[a-z0-9.-]+', but got: 'jos#@mymail.com' - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 - + - + - + <table> @@ -615,12 +624,12 @@ I want to add, browse and remove my contacts - + 111 - + Step 4: System.InvalidOperationException : Parameter 'contacts' verification failed: [1].Email: expected: equals 'john@hotmail.com', but got: 'john123@gmail.com' [3].Name: missing value [3].Email: missing value @@ -628,8 +637,8 @@ I want to add, browse and remove my contacts [4].Name: unexpected value [4].Email: unexpected value [4].PhoneNumber: unexpected value - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 <table> @@ -673,71 +682,71 @@ I want to add, browse and remove my contacts [4].Name: unexpected value [4].Email: unexpected value [4].PhoneNumber: unexpected value - at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyArguments() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 173 - at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 136 + at LightBDD.Core.Execution.Implementation.RunnableStep.VerifyParameterResults() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 172 + at LightBDD.Core.Execution.Implementation.RunnableStep.RunStepAsync() in d:\dev\LightBDD\src\LightBDD.Core\Execution\Implementation\RunnableStep.cs:line 144 - -