diff --git a/resources/bdd-report/classes/piperkt.bdd.CucumberTest.html b/resources/bdd-report/classes/piperkt.bdd.CucumberTest.html new file mode 100644 index 00000000..30ccefb8 --- /dev/null +++ b/resources/bdd-report/classes/piperkt.bdd.CucumberTest.html @@ -0,0 +1,249 @@ + + + + + +Test results - CucumberTest + + + + + +
+

CucumberTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
11
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
7.507s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestDurationResult
Channel Management - Admin creates a channel in a server2.969spassed
Channel Management - Admin removes a channel0.376spassed
Channel Management - User sends a message in a text channel0.348spassed
Friendship System - User accepts a friend request0.612spassed
Friendship System - User rejects a friend request0.665spassed
Friendship System - User sends a friend request0.519spassed
Interactions with Friends - User sends a message to a friend0.705spassed
Server Management - User creates a new server0.318spassed
Server Management - User join a server0.647spassed
User Registration and Authentication - User logs in to the system0.236spassed
User Registration and Authentication - User registers to the system0.112spassed
+
+
+

Standard output

+ +
+Scenario: Admin creates a channel in a server ?[90m# piperkt/bdd/channel-management.feature:2?[0m
+17:44:08,727 |-INFO in ch.qos.logback.classic.LoggerContext[default] - This is logback-classic version 1.5.6
+17:44:08,729 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - No custom configurators were discovered as a service.
+17:44:08,729 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - Trying to configure with ch.qos.logback.classic.joran.SerializedModelConfigurator
+17:44:08,730 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - Constructed configurator of type class ch.qos.logback.classic.joran.SerializedModelConfigurator
+17:44:08,731 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.scmo]
+17:44:08,731 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.scmo]
+17:44:08,733 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - ch.qos.logback.classic.joran.SerializedModelConfigurator.configure() call lasted 1 milliseconds. ExecutionStatus=INVOKE_NEXT_IF_ANY
+17:44:08,733 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - Trying to configure with ch.qos.logback.classic.util.DefaultJoranConfigurator
+17:44:08,734 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - Constructed configurator of type class ch.qos.logback.classic.util.DefaultJoranConfigurator
+17:44:08,734 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
+17:44:08,735 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/Users/alessandromazzoli/Desktop/piper-kt/users-service/build/libs/users-service.jar!/logback.xml]
+17:44:08,735 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@688b081a - Resource [logback.xml] occurs multiple times on the classpath.
+17:44:08,735 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@688b081a - Resource [logback.xml] occurs at [jar:file:/Users/alessandromazzoli/Desktop/piper-kt/friendships-service/build/libs/friendships-service.jar!/logback.xml]
+17:44:08,735 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@688b081a - Resource [logback.xml] occurs at [jar:file:/Users/alessandromazzoli/Desktop/piper-kt/servers-service/build/libs/servers-service.jar!/logback.xml]
+17:44:08,735 |-WARN in ch.qos.logback.classic.util.DefaultJoranConfigurator@688b081a - Resource [logback.xml] occurs at [jar:file:/Users/alessandromazzoli/Desktop/piper-kt/users-service/build/libs/users-service.jar!/logback.xml]
+17:44:08,740 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@7a2ba1dd - URL [jar:file:/Users/alessandromazzoli/Desktop/piper-kt/users-service/build/libs/users-service.jar!/logback.xml] is not of type file
+17:44:08,797 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - Processing appender named [STDOUT]
+17:44:08,797 |-INFO in ch.qos.logback.core.model.processor.AppenderModelHandler - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
+17:44:08,803 |-INFO in ch.qos.logback.core.model.processor.ImplicitModelHandler - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
+17:44:08,829 |-INFO in ch.qos.logback.classic.model.processor.RootLoggerModelHandler - Setting level of ROOT logger to INFO
+17:44:08,830 |-INFO in ch.qos.logback.core.model.processor.AppenderRefModelHandler - Attaching appender named [STDOUT] to Logger[ROOT]
+17:44:08,832 |-INFO in ch.qos.logback.core.model.processor.DefaultProcessor@7a05815c - End of configuration.
+17:44:08,835 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@2788ca8b - Registering current configuration as safe fallback point
+17:44:08,836 |-INFO in ch.qos.logback.classic.util.ContextInitializer@7d340c83 - ch.qos.logback.classic.util.DefaultJoranConfigurator.configure() call lasted 102 milliseconds. ExecutionStatus=DO_NOT_INVOKE_NEXT_IF_ANY
+
+?[36m17:44:09.150?[0;39m ?[1;30m[Test worker]?[0;39m ?[34mINFO ?[0;39m ?[35mi.m.s.ObjectMappers$ObjectMapperContext$1?[0;39m - Established active environments: [test]
+  ?[32mGiven ?[0m?[32mI am an authenticated user?[0m            ?[90m# void piperkt.bdd.channels.ChannelsSteps.iAmAnAuthenticatedUser()?[0m
+  ?[32mAnd ?[0m?[32mI have created a server?[0m                 ?[90m# void piperkt.bdd.channels.ChannelsSteps.iHaveAServer()?[0m
+  ?[32mWhen ?[0m?[32mI create a new channel in a server?[0m     ?[90m# void piperkt.bdd.channels.ChannelsSteps.iCreateANewChannelInAServer()?[0m
+  ?[32mThen ?[0m?[32mI should be able to access the channel?[0m ?[90m# void piperkt.bdd.channels.ChannelsSteps.iShouldBeAbleToAccessTheChannel()?[0m
+
+Scenario: Admin removes a channel                    ?[90m# piperkt/bdd/channel-management.feature:8?[0m
+  ?[32mGiven ?[0m?[32mI am an authenticated user?[0m                   ?[90m# void piperkt.bdd.channels.ChannelsSteps.iAmAnAuthenticatedUser()?[0m
+  ?[32mAnd ?[0m?[32mI have created a server?[0m                        ?[90m# void piperkt.bdd.channels.ChannelsSteps.iHaveAServer()?[0m
+  ?[32mAnd ?[0m?[32mthere is a channel in the server?[0m               ?[90m# void piperkt.bdd.channels.ChannelsSteps.thereIsAChannelInTheServer()?[0m
+  ?[32mWhen ?[0m?[32mI remove the channel?[0m                          ?[90m# void piperkt.bdd.channels.ChannelsSteps.iRemoveTheChannel()?[0m
+  ?[32mThen ?[0m?[32mthe channel should be removed from the server?[0m ?[90m# void piperkt.bdd.channels.ChannelsSteps.theChannelShouldBeRemovedFromTheServer()?[0m
+
+Scenario: User sends a message in a text channel      ?[90m# piperkt/bdd/channel-management.feature:15?[0m
+  ?[32mGiven ?[0m?[32mI am an authenticated user?[0m                    ?[90m# void piperkt.bdd.channels.ChannelsSteps.iAmAnAuthenticatedUser()?[0m
+  ?[32mAnd ?[0m?[32mI have created a server?[0m                         ?[90m# void piperkt.bdd.channels.ChannelsSteps.iHaveAServer()?[0m
+  ?[32mAnd ?[0m?[32mthere is a text channel in the server?[0m           ?[90m# void piperkt.bdd.channels.ChannelsSteps.thereIsATextChannelInTheServer()?[0m
+  ?[32mWhen ?[0m?[32mI send a message in a text channel?[0m             ?[90m# void piperkt.bdd.channels.ChannelsSteps.iSendAMessage()?[0m
+  ?[32mThen ?[0m?[32mthe message should be displayed in the channel?[0m ?[90m# void piperkt.bdd.channels.ChannelsSteps.theMessageShouldBeDisplayedInTheChannel()?[0m
+
+Scenario: User sends a message to a friend   ?[90m# piperkt/bdd/direct.feature:3?[0m
+  ?[32mGiven ?[0m?[32mI am logged user?[0m                     ?[90m# void piperkt.bdd.directs.DirectSteps.iAmLoggedUser()?[0m
+  ?[32mAnd ?[0m?[32mI have a friend?[0m                        ?[90m# void piperkt.bdd.directs.DirectSteps.iHaveAFriend()?[0m
+  ?[32mWhen ?[0m?[32mI send a message to the friend?[0m        ?[90m# void piperkt.bdd.directs.DirectSteps.iSendAMessageToTheFriend()?[0m
+  ?[32mThen ?[0m?[32mthe friend should receive the message?[0m ?[90m# void piperkt.bdd.directs.DirectSteps.theFriendShouldReceiveTheMessage()?[0m
+
+Scenario: User sends a friend request                      ?[90m# piperkt/bdd/friendship.feature:3?[0m
+  ?[32mGiven ?[0m?[32mI am a logged user?[0m                                 ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iAmALoggedUser()?[0m
+  ?[32mAnd ?[0m?[32manother user exists?[0m                                  ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.anotherUserExists()?[0m
+  ?[32mWhen ?[0m?[32mI send a friend request to the other user?[0m           ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iSendAFriendRequestToTheOtherUser()?[0m
+  ?[32mThen ?[0m?[32mthe other user should have a pending friend request?[0m ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.theOtherUserShouldHaveAPendingFriendRequest()?[0m
+
+Scenario: User accepts a friend request                   ?[90m# piperkt/bdd/friendship.feature:9?[0m
+  ?[32mGiven ?[0m?[32mI am a logged user?[0m                                ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iAmALoggedUser()?[0m
+  ?[32mAnd ?[0m?[32manother user exists?[0m                                 ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.anotherUserExists()?[0m
+  ?[32mAnd ?[0m?[32mI have a pending friend request from the other user?[0m ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iHaveAPendingFriendRequest()?[0m
+  ?[32mWhen ?[0m?[32mI accept the friend request?[0m                        ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iAcceptTheFriendRequest()?[0m
+  ?[32mThen ?[0m?[32mthe other user should be added to my friend list?[0m   ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.theOtherUserShouldBeAddedToMyFriendList()?[0m
+
+Scenario: User rejects a friend request                     ?[90m# piperkt/bdd/friendship.feature:16?[0m
+  ?[32mGiven ?[0m?[32mI am a logged user?[0m                                  ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iAmALoggedUser()?[0m
+  ?[32mAnd ?[0m?[32manother user exists?[0m                                   ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.anotherUserExists()?[0m
+  ?[32mAnd ?[0m?[32mI have a pending friend request from the other user?[0m   ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iHaveAPendingFriendRequest()?[0m
+  ?[32mWhen ?[0m?[32mI reject the friend request?[0m                          ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.iRejectTheFriendRequest()?[0m
+  ?[32mThen ?[0m?[32mthe other user should not be added to my friend list?[0m ?[90m# void piperkt.bdd.friendship.FriendshipsSteps.theOtherUserShouldNotBeAddedToMyFriendList()?[0m
+
+Scenario: User creates a new server                   ?[90m# piperkt/bdd/servers.feature:3?[0m
+  ?[32mGiven ?[0m?[32mI am the logged user?[0m                          ?[90m# void piperkt.bdd.servers.ServersSteps.iAmALoggedUser()?[0m
+  ?[32mWhen ?[0m?[32mI create a new server?[0m                          ?[90m# void piperkt.bdd.servers.ServersSteps.iCreateANewServer()?[0m
+  ?[32mThen ?[0m?[32mI should be able to access the server as owner?[0m ?[90m# void piperkt.bdd.servers.ServersSteps.iShouldBeAbleToAccessTheServer()?[0m
+
+Scenario: User join a server                           ?[90m# piperkt/bdd/servers.feature:8?[0m
+  ?[32mGiven ?[0m?[32mI am the logged user?[0m                           ?[90m# void piperkt.bdd.servers.ServersSteps.iAmALoggedUser()?[0m
+  ?[32mAnd ?[0m?[32manother user has a server?[0m                        ?[90m# void piperkt.bdd.servers.ServersSteps.anotherUserHasAServer()?[0m
+  ?[32mWhen ?[0m?[32mI join the server?[0m                               ?[90m# void piperkt.bdd.servers.ServersSteps.iJoinTheServer()?[0m
+  ?[32mThen ?[0m?[32mI should be able to access the server as member?[0m ?[90m# void piperkt.bdd.servers.ServersSteps.iShouldBeAbleToAccessTheServerAsMember()?[0m
+
+Scenario: User registers to the system                  ?[90m# piperkt/bdd/users.feature:3?[0m
+  ?[32mGiven ?[0m?[32mI am not logged in?[0m                              ?[90m# void piperkt.bdd.users.UserManagementSteps.iAmNotLoggedIn()?[0m
+  ?[32mWhen ?[0m?[32mI make a REGISTER request with valid credentials?[0m ?[90m# void piperkt.bdd.users.UserManagementSteps.iMakeAREGISTERRequestWithValidCredentials()?[0m
+  ?[32mThen ?[0m?[32mI should be registered to the system?[0m             ?[90m# void piperkt.bdd.users.UserManagementSteps.iShouldBeRegisteredToTheSystem()?[0m
+
+Scenario: User logs in to the system                 ?[90m# piperkt/bdd/users.feature:8?[0m
+  ?[32mGiven ?[0m?[32mI am registered?[0m                              ?[90m# void piperkt.bdd.users.UserManagementSteps.iAmRegistered()?[0m
+  ?[32mAnd ?[0m?[32mI am not logged in?[0m                             ?[90m# void piperkt.bdd.users.UserManagementSteps.iAmNotLoggedIn()?[0m
+  ?[32mWhen ?[0m?[32mI make a LOGIN request with valid credentials?[0m ?[90m# void piperkt.bdd.users.UserManagementSteps.iMakeALOGINRequestWithValidCredentials()?[0m
+  ?[32mThen ?[0m?[32mI should be logged in to the system?[0m           ?[90m# void piperkt.bdd.users.UserManagementSteps.iShouldBeLoggedInToTheSystem()?[0m
+
+
+
+
+ +
+ + diff --git a/resources/bdd-report/css/base-style.css b/resources/bdd-report/css/base-style.css new file mode 100644 index 00000000..4afa73e3 --- /dev/null +++ b/resources/bdd-report/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/resources/bdd-report/css/style.css b/resources/bdd-report/css/style.css new file mode 100644 index 00000000..3dc4913e --- /dev/null +++ b/resources/bdd-report/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/resources/bdd-report/index.html b/resources/bdd-report/index.html new file mode 100644 index 00000000..1c54b9e1 --- /dev/null +++ b/resources/bdd-report/index.html @@ -0,0 +1,133 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
11
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
7.507s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+piperkt.bdd +11007.507s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+piperkt.bdd.CucumberTest +11007.507s100%
+
+
+ +
+ + diff --git a/resources/bdd-report/js/report.js b/resources/bdd-report/js/report.js new file mode 100644 index 00000000..83bab4a1 --- /dev/null +++ b/resources/bdd-report/js/report.js @@ -0,0 +1,194 @@ +(function (window, document) { + "use strict"; + + var tabs = {}; + + function changeElementClass(element, classValue) { + if (element.getAttribute("className")) { + element.setAttribute("className", classValue); + } else { + element.setAttribute("class", classValue); + } + } + + function getClassAttribute(element) { + if (element.getAttribute("className")) { + return element.getAttribute("className"); + } else { + return element.getAttribute("class"); + } + } + + function addClass(element, classValue) { + changeElementClass(element, getClassAttribute(element) + " " + classValue); + } + + function removeClass(element, classValue) { + changeElementClass(element, getClassAttribute(element).replace(classValue, "")); + } + + function initTabs() { + var container = document.getElementById("tabs"); + + tabs.tabs = findTabs(container); + tabs.titles = findTitles(tabs.tabs); + tabs.headers = findHeaders(container); + tabs.select = select; + tabs.deselectAll = deselectAll; + tabs.select(0); + + return true; + } + + function getCheckBox() { + return document.getElementById("line-wrapping-toggle"); + } + + function getLabelForCheckBox() { + return document.getElementById("label-for-line-wrapping-toggle"); + } + + function findCodeBlocks() { + var spans = document.getElementById("tabs").getElementsByTagName("span"); + var codeBlocks = []; + for (var i = 0; i < spans.length; ++i) { + if (spans[i].className.indexOf("code") >= 0) { + codeBlocks.push(spans[i]); + } + } + return codeBlocks; + } + + function forAllCodeBlocks(operation) { + var codeBlocks = findCodeBlocks(); + + for (var i = 0; i < codeBlocks.length; ++i) { + operation(codeBlocks[i], "wrapped"); + } + } + + function toggleLineWrapping() { + var checkBox = getCheckBox(); + + if (checkBox.checked) { + forAllCodeBlocks(addClass); + } else { + forAllCodeBlocks(removeClass); + } + } + + function initControls() { + if (findCodeBlocks().length > 0) { + var checkBox = getCheckBox(); + var label = getLabelForCheckBox(); + + checkBox.onclick = toggleLineWrapping; + checkBox.checked = false; + + removeClass(label, "hidden"); + } + } + + function switchTab() { + var id = this.id.substr(1); + + for (var i = 0; i < tabs.tabs.length; i++) { + if (tabs.tabs[i].id === id) { + tabs.select(i); + break; + } + } + + return false; + } + + function select(i) { + this.deselectAll(); + + changeElementClass(this.tabs[i], "tab selected"); + changeElementClass(this.headers[i], "selected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var h2 = document.createElement("H2"); + + h2.appendChild(document.createTextNode(this.titles[i])); + this.headers[i].appendChild(h2); + } + + function deselectAll() { + for (var i = 0; i < this.tabs.length; i++) { + changeElementClass(this.tabs[i], "tab deselected"); + changeElementClass(this.headers[i], "deselected"); + + while (this.headers[i].firstChild) { + this.headers[i].removeChild(this.headers[i].firstChild); + } + + var a = document.createElement("A"); + + a.setAttribute("id", "ltab" + i); + a.setAttribute("href", "#tab" + i); + a.onclick = switchTab; + a.appendChild(document.createTextNode(this.titles[i])); + + this.headers[i].appendChild(a); + } + } + + function findTabs(container) { + return findChildElements(container, "DIV", "tab"); + } + + function findHeaders(container) { + var owner = findChildElements(container, "UL", "tabLinks"); + return findChildElements(owner[0], "LI", null); + } + + function findTitles(tabs) { + var titles = []; + + for (var i = 0; i < tabs.length; i++) { + var tab = tabs[i]; + var header = findChildElements(tab, "H2", null)[0]; + + header.parentNode.removeChild(header); + + if (header.innerText) { + titles.push(header.innerText); + } else { + titles.push(header.textContent); + } + } + + return titles; + } + + function findChildElements(container, name, targetClass) { + var elements = []; + var children = container.childNodes; + + for (var i = 0; i < children.length; i++) { + var child = children.item(i); + + if (child.nodeType === 1 && child.nodeName === name) { + if (targetClass && child.className.indexOf(targetClass) < 0) { + continue; + } + + elements.push(child); + } + } + + return elements; + } + + // Entry point. + + window.onload = function() { + initTabs(); + initControls(); + }; +} (window, window.document)); \ No newline at end of file diff --git a/resources/bdd-report/packages/piperkt.bdd.html b/resources/bdd-report/packages/piperkt.bdd.html new file mode 100644 index 00000000..05b02bd8 --- /dev/null +++ b/resources/bdd-report/packages/piperkt.bdd.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package piperkt.bdd + + + + + +
+

Package piperkt.bdd

+ +
+ + + + + +
+
+ + + + + + + +
+
+
11
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
7.507s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+CucumberTest +11007.507s100%
+
+
+ +
+ +