Included page: .FitNesse.SuiteAcceptanceTests.ScenarioLibrary (edit)
scenario | given page | page | with content | content |
create page | @page | with content | @content | |
$IT= | echo | @page |
scenario | given page | page | |
given page | @page | with content | nothing |
$CONTENT= | echo |
scenario | given test page | page |
given page | @page | |
make | @page | a test page |
scenario | given slim test page | page | |
given page | @page | with content | !define TEST_SYSTEM {slim} |
make | @page | a test page |
scenario | page | source | should have link to | target |
check | request page | @source | 200 | |
ensure | content contains | <a href="@target" | ||
$IT= | echo | @source |
scenario | it should have link to | target | |
page | $IT | should have link to | @target |
scenario | and it should have link to | target | |
page | $IT | should have link to | @target |
scenario | page | source | should have creating link to | target |
check | request page | @source | 200 | |
ensure | content contains | @target<a title="create page" href="@target?edit&nonExistent=true">[?]</a> |
scenario | it should have creating link to | target | |
page | $IT | should have creating link to | @target |
scenario | page | source | should contain | text |
check | request page | @source | 200 | |
ensure | content contains | @text | ||
show | content |
scenario | page | source | should not contain | text |
check | request page | @source | 200 | |
reject | content contains | @text | ||
show | content |
scenario | page | source | should match | text |
check | request page | @source | 200 | |
ensure | content matches | @text | ||
show | content |
scenario | it should contain | text | |
page | $IT | should contain | @text |
scenario | it should not contain | text | |
page | $IT | should not contain | @text |
scenario | it should contain | text | in line | symbol |
check | request page | $IT | 200 | |
$@symbol= | line number containing | @text |
scenario | it should match | text | |
page | $IT | should match | @text |
scenario | test results for page | source | should contain | text |
check | request page | @source?test | 200 | |
ensure | content contains | @text | ||
show | content |
scenario | test results for page in debug mode | source | should contain | text |
check | request page | @source?test&debug | 200 | |
ensure | content contains | @text | ||
show | content |
scenario | test results for suite | source | should contain | text |
check | request page | @source?suite | 200 | |
ensure | content contains | @text | ||
show | content |
scenario | its test results should contain | text | |
test results for page | $IT | should contain | @text |
scenario | test ressults for page | source | should not contain | text |
check | request page | @source?test | 200 | |
reject | content contains | @text | ||
show | content |
scenario | and should contain | text |
ensure | content contains | @text |
show | content |
scenario | and should match | text |
ensure | content matches | @text |
show | content |
scenario | and should not contain | text |
reject | content contains | @text |
show | content |
scenario | widget | wikiText | should render | htmlText |
create page | WidgetPage | with content | @wikiText | |
check | request page | WidgetPage | 200 | |
ensure | content matches | @htmlText | ||
show | content |
scenario | the line | after | should come after | before |
check | echo int | $@before | < $@after |
scenario | pass | ||
check | echo | pass | pass |
scenario | show collapsed | content |
show | @content |
scenario | show Symbol | result |
scenario | then | pass | assertions pass, | fail | fail, | ignore | are ignored | exception | exceptions thrown |
ensure | content matches | Assertions:<[^<]*@pass right, @fail wrong, @ignore ignored, @exception exceptions | |||||||
show | extract match; | Assertions:<[^<]*exceptions | contents | 0 |
scenario | and cell | text | has result | result |
ensure | content matches | class="@result">@text< | ||
show | extract match; | class="[^"]+">@text< | contents | 0 |
scenario | and TestSystem setup is | content |
$CONTENT= | echo | $CONTENT @content |
scenario | and setup content is | content |
$CONTENT= | echo | $CONTENT @content |
scenario | and test content is | content | |
given page | $IT | with content | $CONTENT @@@START: Test specific content@content@@@END: Test specific content |
make | $IT | a test page |
scenario | get HTML result |
start | Response Examiner. |
setType | contents |
setPattern | @@@START: Test specific content[^<]*(.*>)\s*@@@END: Test specific content |
setGroup | 1 |
$HTML_Result= | found |
scenario | get HTML input |
start | Response Examiner. |
setType | pageHtml |
setPattern | @@@START: Test specific content[^<]*(.*>)\s*@@@END: Test specific content |
setGroup | 1 |
$HTML_Input= | found |
show collapsed | get value |
scenario | get collapsed executon log for page | source | |
check | request page | @source?executionLog | 200 |
show | content |
scenario | when page | source | is tested |
check | request page | @source?test | 200 |
show collapsed | content |
scenario | when page | source | is tested and HTML is extracted |
when page | @source | is tested | |
get HTML result | |||
get HTML input |
Included page: .FitNesse.SuiteAcceptanceTests.SuiteSlimTests.SetUp (edit)
Import |
fitnesse.fixtures |
SetUp | Plugins=fitnesse.testsystems.slim.CustomTableAliasPlugin Plugins=fitnesse.testsystems.slim.CustomScriptTableRenderingPlugin CustomComparators=glob:fitnesse.testsystems.slim.GlobComparator |
Library |
page driver |
echo fixture |
import |
fitnesse.slim.test |
Included page: .FitNesse.UserGuide.WritingAcceptanceTests.SliM.DefineAlias (edit)
The "Define Alias" table is designed to help you to segregate requirements from the implementation.
Normally the table name must be a graceful name of the class name used in your implementation.
This might not be convenient in some situations.
Below is a dynamic decision table without any alias. This will be used in the following examples with alias definitions
and in addition the test case is defined as decision table but you implemented it as dynamic decision table.
You can overwrite the table type and the name.
Note that the DefineTableType table will not overwrite type definitions given in the test.
Your implementation requires that you prepare the test fixture in a script.
It doesn't matters if you define the alias before or after you create the fixture.
Again you can add a table type definition if required
Another example with a constructor parameter
The alias can help you to get around these.
The alias fixture allows QA people to implement requirements by reusing existing framework functions and without writing new code.
Still your test pages are easy to read, especially for project managers, BA's and Product owners who might not understand how Fitnesse works.
Hint: Try putting the "Define Alias" fixtures in the same place as your "Import" fixtures. The setup pages are a good place for these!
Normally the table name must be a graceful name of the class name used in your implementation.
This might not be convenient in some situations.
- your implementation is a generic framework, in this case it is unlikely that classnames match the business names
- your implementation needs technical configuration parameters which are not important to the business
Below is a dynamic decision table without any alias. This will be used in the following examples with alias definitions
ddt: add up change | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 0 | 0 | 0 | 52 | 0.52 |
Use Case 1
The business expects a different name "add change" than your class name "add up change"Define alias | |
add change | add up change |
ddt: add change | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 0 | 0 | 1 | 152 | 1.52 |
Use Case 2
The business expects a different name "add up" than your class name "add up change"and in addition the test case is defined as decision table but you implemented it as dynamic decision table.
You can overwrite the table type and the name.
Define alias | |
add up | ddt: add up change |
dt: add up | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 0 | 1 | 0 | 102 | 1.02 |
Use Case 3
The names are matching but you need to overwrite the table type.Note that the DefineTableType table will not overwrite type definitions given in the test.
Define alias | |
add up change | ddt: |
dt: add up change | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 0 | 0 | 0 | 52 | 0.52 |
Use Case 4
The requirements have been written beforehand with a business name.Your implementation requires that you prepare the test fixture in a script.
script | add up change |
$myfixture= | get fixture |
Define alias | |
add money | $myfixture |
ddt: add money | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 4 | 0 | 1 | 252 | 2.52 |
It doesn't matters if you define the alias before or after you create the fixture.
Again you can add a table type definition if required
Define alias | |
add more money | ddt: $anotherFixture |
script | add up change |
$anotherFixture= | get fixture |
add more money | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 4 | 0 | 1 | 252 | 2.52 |
Another example with a constructor parameter
script | test query | 2 |
show | query | |
$tq= | get fixture |
Define alias | |
my query | query: $tq |
my query | |
n | 2n |
1 | 2 |
2 | 4 |
script | test query | 3 |
show | query | |
$tq= | get fixture |
Define alias | |
my query | subset query: $tq |
my query | |
n | 2n |
2 | 4 |
3 | 6 |
Use Case 5
If you can't use an Import[?] statement or you have import conflicts you can't resolve.The alias can help you to get around these.
Define alias | |
what is in my pocket | ddt: fitnesse.slim.test.AddUpChange |
what is in my pocket | ||||||||
# description | 1c | 5c | 10c | 25c | 50c | $1 | total cents? | $ total? |
some simple addition | 2 | 2 | 4 | 4 | 0 | 1 | 252 | 2.52 |
The alias fixture allows QA people to implement requirements by reusing existing framework functions and without writing new code.
Still your test pages are easy to read, especially for project managers, BA's and Product owners who might not understand how Fitnesse works.
Hint: Try putting the "Define Alias" fixtures in the same place as your "Import" fixtures. The setup pages are a good place for these!
Keyboard Shortcuts ?
General
- t Test page or suite
- e Edit page
- v View page (after test)
- a Add new page
Go To
- g u User Guide
- g q Quick Reference Guide
- g f Full Reference Guide
- g c Recent Changes
Edit Mode
- CTRL+s Save page
- ESC Cancel edit
Tools
- p Properties
- w Where used?
- AK+v Versions
- AK+h Page History
- / Focus on search bar
- s Open search page