├── allure-java-adaptor-api
└── src
│ ├── test
│ ├── resources
│ │ ├── a.txt
│ │ ├── a.html
│ │ ├── a.xml
│ │ ├── a.jpeg
│ │ ├── a.png
│ │ ├── testdata
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── ru.yandex.qatools.allure.experimental.LifecycleListener
│ │ └── a.json
│ └── java
│ │ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ ├── experimental
│ │ ├── testdata
│ │ │ └── FailingListener.java
│ │ └── ListenersNotifierSPITest.java
│ │ ├── ChangeTestCaseTitleEvent.java
│ │ ├── storages
│ │ ├── TestCaseStorageTest.java
│ │ └── TestSuiteStorageTest.java
│ │ ├── ChangeTestSuiteTitleEvent.java
│ │ └── utils
│ │ └── testdata
│ │ └── SimpleClass.java
│ └── main
│ ├── java
│ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ ├── events
│ │ ├── StepEvent.java
│ │ ├── TestCaseEvent.java
│ │ ├── TestSuiteEvent.java
│ │ ├── Event.java
│ │ ├── StepFinishedEvent.java
│ │ ├── TestCaseFinishedEvent.java
│ │ ├── StepCanceledEvent.java
│ │ ├── TestSuiteFinishedEvent.java
│ │ ├── StepFailureEvent.java
│ │ └── StepStartedEvent.java
│ │ ├── storages
│ │ └── TestCaseStorage.java
│ │ └── exceptions
│ │ └── AllureException.java
│ └── resources
│ └── bindings.xjb
├── allure-report-face
├── .istanbul.yml
├── .gitignore
├── src
│ ├── helpers
│ │ ├── eq.js
│ │ ├── gt.js
│ │ ├── inc.js
│ │ ├── concat.js
│ │ ├── filesize.js
│ │ ├── fileicon.js
│ │ ├── b.js
│ │ ├── t.js
│ │ ├── default.js
│ │ ├── sort-class.js
│ │ ├── linky.js
│ │ ├── time.js
│ │ ├── date.js
│ │ └── status-bar.js
│ ├── favicon.ico
│ ├── layouts
│ │ ├── application
│ │ │ ├── AppLayout.hbs
│ │ │ ├── styles.css
│ │ │ └── AppLayout.js
│ │ ├── error
│ │ │ └── ErrorLayout.js
│ │ ├── overview
│ │ │ └── OverivewLayout.js
│ │ └── pane
│ │ │ └── PaneLayout.js
│ ├── plugins
│ │ ├── testcase-links
│ │ │ ├── styles.css
│ │ │ ├── index.js
│ │ │ ├── LinksView.hbs
│ │ │ └── LinksView.js
│ │ ├── behaviors
│ │ │ ├── behavior-view
│ │ │ │ ├── BehaviorView.hbs
│ │ │ │ └── BehaviorView.js
│ │ │ ├── BehaviorsWidget.js
│ │ │ ├── index.js
│ │ │ ├── data
│ │ │ │ └── BehaviorsModel.js
│ │ │ └── behaviors-tree
│ │ │ │ └── styles.css
│ │ ├── xunit
│ │ │ ├── testsuite-view
│ │ │ │ ├── TestsuiteView.hbs
│ │ │ │ └── TestsuiteView.js
│ │ │ ├── XUnitWidget.js
│ │ │ ├── index.js
│ │ │ ├── testsuites-list
│ │ │ │ ├── styles.css
│ │ │ │ └── suite-table-row.hbs
│ │ │ └── xunit-collection
│ │ │ │ └── XUnitCollection.js
│ │ ├── testcase-parameters
│ │ │ ├── styles.css
│ │ │ ├── index.js
│ │ │ ├── ParametersView.hbs
│ │ │ └── ParametersView.js
│ │ ├── report-stats
│ │ │ ├── report-stats-widget
│ │ │ │ ├── ReportWidgetModel.js
│ │ │ │ ├── styles.css
│ │ │ │ ├── ReportStatsWidget.js
│ │ │ │ └── ReportStatsWidget.hbs
│ │ │ └── index.js
│ │ ├── testcase-description
│ │ │ ├── index.js
│ │ │ ├── DescriptionView.hbs
│ │ │ └── DescriptionView.js
│ │ ├── environment
│ │ │ ├── index.js
│ │ │ └── environment-widget
│ │ │ │ ├── EnvironmentWidget.hbs
│ │ │ │ └── EnvironmentWidget.js
│ │ ├── defects
│ │ │ ├── defects-widget
│ │ │ │ ├── DefectsWidget.js
│ │ │ │ └── DefectsWidget.hbs
│ │ │ ├── translations
│ │ │ │ ├── zh.json
│ │ │ │ ├── en.json
│ │ │ │ ├── ptbr.json
│ │ │ │ └── ru.json
│ │ │ ├── defect-view
│ │ │ │ ├── DefectView.hbs
│ │ │ │ └── DefectView.js
│ │ │ ├── defects-list
│ │ │ │ ├── styles.css
│ │ │ │ ├── DefectsListView.js
│ │ │ │ └── DefectsListView.hbs
│ │ │ ├── defects-collection
│ │ │ │ └── DefectsCollection.js
│ │ │ └── index.js
│ │ ├── graph
│ │ │ ├── GraphCollection.js
│ │ │ ├── index.js
│ │ │ ├── GraphLayout.js
│ │ │ ├── graph-widget
│ │ │ │ ├── GraphWidget.js
│ │ │ │ └── GraphWidget.hbs
│ │ │ └── styles.css
│ │ ├── timeline
│ │ │ ├── styles.css
│ │ │ ├── index.js
│ │ │ ├── TimelineModel.js
│ │ │ └── TimelineLayout.js
│ │ └── default
│ │ │ └── index.js
│ ├── components
│ │ ├── error-splash
│ │ │ ├── ErrorSplashView.hbs
│ │ │ └── ErrorSplashView.js
│ │ ├── side-nav
│ │ │ ├── allure-logo.png
│ │ │ └── SideNavView.hbs
│ │ ├── language-select
│ │ │ ├── checkmark.svg
│ │ │ ├── LanguageSelectView.hbs
│ │ │ ├── styles.css
│ │ │ └── LanguageSelectView.js
│ │ ├── testcase-view
│ │ │ └── styles.css
│ │ ├── status-toggle
│ │ │ ├── StatusToggleView.hbs
│ │ │ ├── styles.css
│ │ │ └── StatusToggleView.js
│ │ ├── popover
│ │ │ ├── PopoverView.js
│ │ │ └── styles.css
│ │ ├── widgets-grid
│ │ │ └── styles.css
│ │ ├── testcase-table
│ │ │ ├── styles.css
│ │ │ └── TestcaseTableView.hbs
│ │ ├── widget-status
│ │ │ ├── WidgetStatusView.js
│ │ │ └── WidgetStatusView.hbs
│ │ ├── steps
│ │ │ ├── arrow.svg
│ │ │ ├── StepsView.hbs
│ │ │ ├── styles.css
│ │ │ └── steps-list.hbs
│ │ ├── tooltip
│ │ │ └── styles.css
│ │ ├── attachment
│ │ │ └── styles.css
│ │ └── chart
│ │ │ └── styles.css
│ ├── behaviors
│ │ ├── index.js
│ │ ├── LoadBehavior.js
│ │ └── TooltipBehavior.js
│ ├── util
│ │ ├── settings.js
│ │ ├── escape.js
│ │ ├── highlight.js
│ │ ├── sorting.js
│ │ ├── translation.js
│ │ └── TestcasePanes.js
│ ├── blocks
│ │ ├── table
│ │ │ ├── sortable-col.hbs
│ │ │ ├── sort-icon.svg
│ │ │ ├── sort-down-icon.svg
│ │ │ └── sort-up-icon.svg
│ │ ├── island
│ │ │ └── styles.css
│ │ ├── link
│ │ │ └── styles.css
│ │ ├── splash
│ │ │ └── styles.css
│ │ ├── label
│ │ │ └── styles.css
│ │ ├── text
│ │ │ └── styles.css
│ │ ├── attachment-row
│ │ │ ├── attachment-row.hbs
│ │ │ └── styles.css
│ │ ├── bar
│ │ │ └── styles.css
│ │ ├── pane-header
│ │ │ └── pane-header.hbs
│ │ ├── alert
│ │ │ └── styles.css
│ │ ├── spinner
│ │ │ └── styles.css
│ │ └── widget
│ │ │ └── styles.css
│ ├── data
│ │ ├── widgets
│ │ │ └── WidgetsModel.js
│ │ ├── testcase
│ │ │ └── TestcaseModel.js
│ │ └── settings
│ │ │ └── SettingsModel.js
│ ├── grid.css
│ ├── mixins.css
│ ├── index.js
│ ├── decorators
│ │ └── index.js
│ ├── pluginApi.js
│ ├── router.spec.js
│ ├── router.js
│ └── variables.css
├── .babelrc
├── test
│ ├── .eslintrc
│ ├── app.spec.js
│ ├── bootstrap.js
│ └── components
│ │ └── status-toggle.spec.js
├── jasmine.json
├── .eslintrc
└── tools
│ └── serve.js
├── allure-report-data
└── src
│ ├── test
│ ├── resources
│ │ ├── ru
│ │ │ └── yandex
│ │ │ │ └── qatools
│ │ │ │ └── allure
│ │ │ │ └── data
│ │ │ │ └── testdata
│ │ │ │ └── SomePluginWithResources
│ │ │ │ ├── b.xml
│ │ │ │ └── a.txt
│ │ ├── testdata1
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── ru.yandex.qatools.allure.data.testdata.SomeService
│ │ ├── testdata2
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── ru.yandex.qatools.allure.data.testdata.SomeService
│ │ ├── testdata3
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── ru.yandex.qatools.allure.data.testdata.SomeService
│ │ ├── testdata
│ │ │ └── META-INF
│ │ │ │ └── services
│ │ │ │ └── ru.yandex.qatools.allure.data.plugins.Plugin
│ │ └── testresults
│ │ │ └── invalidxmlcharacters-testsuite.xml
│ ├── groovy
│ │ └── ru
│ │ │ └── yandex
│ │ │ └── qatools
│ │ │ └── allure
│ │ │ └── data
│ │ │ ├── testdata
│ │ │ ├── SomeService.groovy
│ │ │ ├── SomeServiceImpl.groovy
│ │ │ ├── SomePlugin.groovy
│ │ │ ├── SomePreparePlugin.groovy
│ │ │ ├── SomePluginWithResources.groovy
│ │ │ └── SomeProcessPlugin.groovy
│ │ │ ├── plugins
│ │ │ ├── DefaultPluginLoaderTest.groovy
│ │ │ ├── MigrationPluginTest.groovy
│ │ │ ├── GraphPluginTest.groovy
│ │ │ └── PluginsIndexTest.groovy
│ │ │ └── utils
│ │ │ └── PluginUtilsTest.groovy
│ └── java
│ │ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── data
│ │ └── PluginResourcesTest.java
│ └── main
│ ├── java
│ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── data
│ │ ├── converters
│ │ ├── TestCaseConverter.java
│ │ └── TestSuiteConverter.java
│ │ ├── io
│ │ └── AttachmentReader.java
│ │ └── ReportGenerationException.java
│ ├── groovy
│ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── data
│ │ ├── utils
│ │ └── SummaryCategory.groovy
│ │ └── plugins
│ │ ├── PluginStorage.groovy
│ │ ├── GraphPlugin.groovy
│ │ ├── TotalPlugin.groovy
│ │ ├── MigrationPlugin.groovy
│ │ └── EnvironmentPlugin.groovy
│ └── resources
│ ├── META-INF
│ └── services
│ │ └── ru.yandex.qatools.allure.data.plugins.Plugin
│ ├── index.html.ftl
│ └── xsd
│ ├── graph-plugin.xsd
│ ├── total-plugin.xsd
│ ├── bindings.xjb
│ └── report-data.xsd
├── allure-model
└── src
│ ├── test
│ ├── resources
│ │ └── allure-results
│ │ │ ├── 234a7a37-5559-4294-8da6-84b193cee507-attachment.txt
│ │ │ ├── 650cb877-49cc-446d-964f-f6aa1e5d9634-attachment.txt
│ │ │ ├── 8bc0e8b2-b9f3-4d94-ae5e-99540156e65e-attachment.xml
│ │ │ ├── 10790969-f137-4a63-84e0-f900cb0dd79c-attachment.png
│ │ │ ├── 2a61ec3c-1149-47cc-8640-615e51af26f5-attachment.png
│ │ │ ├── 42eff8b6-ac66-48b3-94db-64f64cb40d88-attachment.png
│ │ │ ├── 8e86c8ae-c2cd-49d4-a1b8-87592aa6de02-attachment.png
│ │ │ ├── aae99fa5-af39-461f-b218-b1e4f2a88e56-attachment.webm
│ │ │ ├── dc160fcc-5f8e-4682-b186-93a65cbd24da-attachment.png
│ │ │ ├── 00a0bc5a-6372-4e66-8088-1571966a156b-attachment.tar.gz
│ │ │ ├── 00a0bc5a-6372-4e66-8088-1571966a056b-attachment.uri
│ │ │ ├── b81da3c0-1b9d-4219-9e35-87e139ec446c-attachment.csv
│ │ │ └── d3df6bc4-475d-436b-b99f-3a4eaba6d1a7-testsuite.xml
│ └── java
│ │ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── config
│ │ ├── VersionTest.java
│ │ └── AllureNamingUtilsTest.java
│ └── main
│ └── resources
│ └── environment.xsd
├── .mvn
└── wrapper
│ ├── maven-wrapper.jar
│ └── maven-wrapper.properties
├── allure-commandline
└── src
│ ├── it
│ ├── version
│ │ └── verify.groovy
│ ├── generate
│ │ └── results
│ │ │ └── sample-testsuite.xml
│ ├── generate-from-path
│ │ └── results
│ │ │ └── sample-testsuite.xml
│ └── generate with space in path
│ │ └── results directory
│ │ └── sample-testsuite.xml
│ └── main
│ ├── plugins
│ └── README.txt
│ ├── resources
│ └── jetty-logging.properties
│ ├── conf
│ ├── command.properties
│ └── log4j.properties
│ └── java
│ └── ru
│ └── yandex
│ └── qatools
│ └── allure
│ ├── command
│ ├── AllureCommand.java
│ ├── AllureHelp.java
│ ├── ExitCode.java
│ ├── AllureCommandException.java
│ ├── AllureVersion.java
│ ├── ReportClean.java
│ └── ReportCommand.java
│ ├── CommandProperties.java
│ └── utils
│ └── DeleteVisitor.java
├── allure-testng-adaptor
└── src
│ ├── main
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.testng.ITestNGListener
│ └── test
│ ├── java
│ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── testng
│ │ ├── testdata
│ │ ├── SimpleTestngTest.java
│ │ ├── GroupTest.java
│ │ └── TestDataClass.java
│ │ └── AllureTestUtils.java
│ └── resources
│ ├── suite1.xml
│ ├── suite2.xml
│ ├── suite-groups.xml
│ └── suite3.xml
├── allure-junit-adaptor
└── src
│ ├── main
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── org.junit.runner.notification.RunListener
│ └── test
│ └── java
│ └── ru
│ └── yandex
│ └── qatools
│ └── allure
│ └── junit
│ ├── testdata
│ ├── TestData.java
│ ├── ClassWithIgnoreAnnotatedMethod.java
│ ├── TestClassWithExceptionInBefore.java
│ ├── TestWithTimeoutAnnotation.java
│ ├── SimpleTestClass.java
│ └── TestWithTimeoutRule.java
│ └── BasicListenerTest.java
├── .gitignore
├── AUTHORS
├── allure-report-plugin-api
├── src
│ └── main
│ │ ├── java
│ │ └── ru
│ │ │ └── yandex
│ │ │ └── qatools
│ │ │ └── allure
│ │ │ └── data
│ │ │ ├── plugins
│ │ │ ├── WithPriority.java
│ │ │ ├── PreparePlugin.java
│ │ │ ├── PluginLoader.java
│ │ │ ├── WithData.java
│ │ │ ├── ProcessPlugin.java
│ │ │ ├── PluginData.java
│ │ │ ├── DefaultTabPlugin.java
│ │ │ ├── PluginClassLoader.java
│ │ │ ├── WithResources.java
│ │ │ ├── WithWidget.java
│ │ │ └── AttachmentsIndex.java
│ │ │ ├── io
│ │ │ ├── Reader.java
│ │ │ └── ResultDirectories.java
│ │ │ └── Widgets.java
│ │ └── resources
│ │ └── xsd
│ │ ├── widgets.xsd
│ │ └── testcases.xjb
└── pom.xml
├── .github
├── CONTRIBUTING.md
└── PULL_REQUEST_TEMPLATE.md
├── allure-java-annotations
├── src
│ └── main
│ │ └── java
│ │ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── annotations
│ │ ├── TestCaseId.java
│ │ ├── Title.java
│ │ ├── Issue.java
│ │ ├── Severity.java
│ │ ├── Issues.java
│ │ ├── Step.java
│ │ ├── Features.java
│ │ ├── Description.java
│ │ ├── Stories.java
│ │ ├── Attachment.java
│ │ └── Parameter.java
└── pom.xml
├── allure-commons
└── src
│ ├── test
│ └── java
│ │ └── ru
│ │ └── yandex
│ │ └── qatools
│ │ └── allure
│ │ └── commons
│ │ └── BadXmlCharacterFilterReaderTest.java
│ └── main
│ └── java
│ └── ru
│ └── yandex
│ └── qatools
│ └── allure
│ └── commons
│ └── BadXmlCharacterFilterReader.java
└── allure-java-aspects
└── src
└── test
└── java
└── ru
└── yandex
└── qatools
└── allure
└── aspects
└── testdata
└── MySteps.java
/allure-java-adaptor-api/src/test/resources/a.txt:
--------------------------------------------------------------------------------
1 | simple text attachment
--------------------------------------------------------------------------------
/allure-report-face/.istanbul.yml:
--------------------------------------------------------------------------------
1 | instrumentation:
2 | root: src
3 |
4 |
--------------------------------------------------------------------------------
/allure-java-adaptor-api/src/test/resources/a.html:
--------------------------------------------------------------------------------
1 |
2 | html
--------------------------------------------------------------------------------
/allure-report-face/.gitignore:
--------------------------------------------------------------------------------
1 | coverage
2 | etc
3 | node_modules
4 | node
5 | target
6 |
--------------------------------------------------------------------------------
/allure-java-adaptor-api/src/test/resources/a.xml:
--------------------------------------------------------------------------------
1 |
2 | Simple xml
--------------------------------------------------------------------------------
/allure-report-face/src/helpers/eq.js:
--------------------------------------------------------------------------------
1 | export default function(a, b) {
2 | return a === b;
3 | }
4 |
--------------------------------------------------------------------------------
/allure-report-face/src/helpers/gt.js:
--------------------------------------------------------------------------------
1 | export default function(a, b) {
2 | return a > b;
3 | }
4 |
--------------------------------------------------------------------------------
/allure-report-face/src/helpers/inc.js:
--------------------------------------------------------------------------------
1 | export default function(index) {
2 | return index + 1;
3 | }
4 |
--------------------------------------------------------------------------------
/allure-report-data/src/test/resources/ru/yandex/qatools/allure/data/testdata/SomePluginWithResources/b.xml:
--------------------------------------------------------------------------------
1 |
{{message}}
3 | -------------------------------------------------------------------------------- /allure-report-data/src/test/resources/testdata2/META-INF/services/ru.yandex.qatools.allure.data.testdata.SomeService: -------------------------------------------------------------------------------- 1 | ru.yandex.qatools.allure.data.testdata.SomePlugin 2 | -------------------------------------------------------------------------------- /allure-report-data/src/test/resources/testdata3/META-INF/services/ru.yandex.qatools.allure.data.testdata.SomeService: -------------------------------------------------------------------------------- 1 | ru.yandex.qatools.allure.data.testdata.SomeServiceImpl 2 | -------------------------------------------------------------------------------- /allure-report-face/src/components/side-nav/allure-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allure-framework/allure1/HEAD/allure-report-face/src/components/side-nav/allure-logo.png -------------------------------------------------------------------------------- /allure-report-face/src/helpers/filesize.js: -------------------------------------------------------------------------------- 1 | import filesize from 'filesize'; 2 | 3 | export default function(size) { 4 | return filesize(size, {base: 2, round: 1}); 5 | } 6 | -------------------------------------------------------------------------------- /allure-model/src/test/resources/allure-results/8bc0e8b2-b9f3-4d94-ae5e-99540156e65e-attachment.xml: -------------------------------------------------------------------------------- 1 |{{failure.message}}
5 | {{value}}
5 | {{/if}} 6 | {{#if (eq type "MARKDOWN")}} 7 | {{{value}}} 8 | {{/if}} 9 | {{/if}} 10 | -------------------------------------------------------------------------------- /allure-report-plugin-api/src/main/java/ru/yandex/qatools/allure/data/io/Reader.java: -------------------------------------------------------------------------------- 1 | package ru.yandex.qatools.allure.data.io; 2 | 3 | import java.util.Iterator; 4 | 5 | /** 6 | * eroshenkoam 7 | * 02/02/15 8 | */ 9 | public interface Reader4 | {{#each arguments}} 5 | {{name}} = {{value}}{{#unless @last}};{{/unless}} 6 | {{/each}} 7 |
8 | {{/if}} 9 | 10 | {{#if environment.length}} 11 |
8 | * @TestCaseId("MYPROJECT-1")
9 | * public void myTest() {
10 | * ...
11 | * }
12 | *
13 | */
14 | @Documented
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @Target({ElementType.METHOD})
17 | public @interface TestCaseId {
18 |
19 | String value();
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/allure-report-plugin-api/src/main/java/ru/yandex/qatools/allure/data/io/ResultDirectories.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data.io;
2 |
3 | import com.google.inject.BindingAnnotation;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | /**
11 | * eroshenkoam
12 | * 02/02/15
13 | */
14 | @Target({ElementType.FIELD, ElementType.PARAMETER})
15 | @Retention(RetentionPolicy.RUNTIME)
16 | @BindingAnnotation
17 | public @interface ResultDirectories {
18 | }
19 |
--------------------------------------------------------------------------------
/allure-report-face/src/plugins/testcase-links/LinksView.hbs:
--------------------------------------------------------------------------------
1 | {{#if hasLinks}}
2 | T will passed to this method.
14 | * You can change given object - it will not affect other plugins.
15 | */
16 | void process(T data);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/allure-report-plugin-api/src/main/java/ru/yandex/qatools/allure/data/plugins/PluginData.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data.plugins;
2 |
3 | /**
4 | * @author Dmitry Baev charlie@yandex-team.ru
5 | * Date: 09.02.15
6 | */
7 | public class PluginData {
8 |
9 | private String name;
10 |
11 | private Object data;
12 |
13 | public PluginData(String name, Object data) {
14 | this.name = name;
15 | this.data = data;
16 | }
17 |
18 | public String getName() {
19 | return name;
20 | }
21 |
22 | public Object getData() {
23 | return data;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/allure-report-plugin-api/src/main/java/ru/yandex/qatools/allure/data/plugins/DefaultTabPlugin.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data.plugins;
2 |
3 | import ru.yandex.qatools.allure.data.AllureTestCase;
4 |
5 | /**
6 | * Base class for all tab plugins.
7 | *
8 | * @author Dmitry Baev charlie@yandex-team.ru
9 | * Date: 17.04.15
10 | * @see ProcessPlugin
11 | */
12 | public abstract class DefaultTabPlugin extends AbstractPlugin
13 | implements ProcessPlugin
13 | * @Issue("MYPROJECT-1")
14 | * public void myTest() {
15 | * ...
16 | * }
17 | *
18 | */
19 | @Documented
20 | @Inherited
21 | @Retention(RetentionPolicy.RUNTIME)
22 | @Target({ElementType.METHOD, ElementType.TYPE})
23 | public @interface Issue {
24 |
25 | String value();
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/allure-report-face/src/components/language-select/styles.css:
--------------------------------------------------------------------------------
1 | @import "../../variables.css";
2 |
3 | .language-select {
4 | z-index: 1;
5 | &.popover {
6 | padding: 0;
7 | }
8 | &__menu {
9 | list-style-type: none;
10 | padding: 0;
11 | margin: 0;
12 | }
13 | &__item {
14 | padding: 0.5em 0.8em;
15 | border-bottom: 1px solid $border-color;
16 | cursor: pointer;
17 | &::before {
18 | content: ' ';
19 | display: inline-block;
20 | background: url(checkmark.svg) center no-repeat;
21 | background-size: contain;
22 | width: 0.8em;
23 | height: 0.8em;
24 | margin-right: 0.5em;
25 | visibility: hidden;
26 | }
27 | &_active::before {
28 | visibility: visible;
29 | }
30 | &:hover {
31 | background: $hover-color;
32 | }
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/allure-java-adaptor-api/src/test/java/ru/yandex/qatools/allure/ChangeTestSuiteTitleEvent.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure;
2 |
3 | import ru.yandex.qatools.allure.events.TestSuiteEvent;
4 | import ru.yandex.qatools.allure.model.TestSuiteResult;
5 |
6 | /**
7 | * @author Dmitry Baev charlie@yandex-team.ru
8 | * Date: 15.12.13
9 | */
10 | public class ChangeTestSuiteTitleEvent implements TestSuiteEvent {
11 | private String uid;
12 | private String title;
13 |
14 | public ChangeTestSuiteTitleEvent(String uid, String title) {
15 | this.uid = uid;
16 | this.title = title;
17 | }
18 |
19 | @Override
20 | public String getUid() {
21 | return uid;
22 | }
23 |
24 | @Override
25 | public void process(TestSuiteResult context) {
26 | context.setTitle(title);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/allure-model/src/test/java/ru/yandex/qatools/allure/config/AllureNamingUtilsTest.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.config;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertNotNull;
6 | import static org.junit.Assert.assertTrue;
7 |
8 | /**
9 | * @author Dmitry Baev charlie@yandex-team.ru
10 | * Date: 02.02.15
11 | */
12 | public class AllureNamingUtilsTest {
13 |
14 | @Test(expected = IllegalStateException.class)
15 | public void initTest() throws Exception {
16 | new AllureNamingUtils();
17 | }
18 |
19 | @Test
20 | public void shouldGenerateSuiteName() throws Exception {
21 | String name = AllureNamingUtils.generateTestSuiteFileName();
22 | assertNotNull(name);
23 | assertTrue(name.matches(new AllureConfig().getTestSuiteFileRegex()));
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/allure-java-annotations/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 | * @Issues({
15 | * @Issue("MYPROJECT-1"),
16 | * @Issue("MYPROJECT-2")
17 | * })
18 | * public void myTest(){
19 | * ...
20 | * }
21 | *
22 | *
23 | * @author Dmitry Baev charlie@yandex-team.ru
24 | * Date: 01.08.14
25 | */
26 | @Documented
27 | @Inherited
28 | @Retention(RetentionPolicy.RUNTIME)
29 | @Target({ElementType.METHOD, ElementType.TYPE})
30 | public @interface Issues {
31 |
32 | Issue[] value();
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/allure-model/src/test/resources/allure-results/d3df6bc4-475d-436b-b99f-3a4eaba6d1a7-testsuite.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 | * @Step("Open '{0}' page.")
16 | * public void openPageByAddress(String pageAddress) {
17 | * ...
18 | * }
19 | *
20 | *
21 | * @author Dmitry Baev charlie@yandex-team.ru
22 | * Date: 10.24.13
23 | */
24 | @Documented
25 | @Retention(RetentionPolicy.RUNTIME)
26 | @Target(ElementType.METHOD)
27 | public @interface Step {
28 |
29 | String value() default "";
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/allure-report-data/src/main/java/ru/yandex/qatools/allure/data/ReportGenerationException.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data;
2 |
3 | /**
4 | * @author Dmitry Baev charlie@yandex-team.ru
5 | * Date: 22.10.13
6 | *
7 | * Signals that an attempt to generate the report in specified directory has failed.
8 | */
9 | public class ReportGenerationException extends RuntimeException {
10 |
11 | /**
12 | * Constructs the {@link ru.yandex.qatools.allure.data.ReportGenerationException} from given cause
13 | *
14 | * @param cause given {@link java.lang.Throwable} cause
15 | */
16 | public ReportGenerationException(Throwable cause) {
17 | super(cause);
18 | }
19 |
20 | /**
21 | * Constructs the {@link ru.yandex.qatools.allure.data.ReportGenerationException} with specified detail message
22 | *
23 | * @param message the detail message.
24 | */
25 | public ReportGenerationException(String message) {
26 | super(message);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/allure-java-annotations/src/main/java/ru/yandex/qatools/allure/annotations/Features.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.annotations;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * In order to group your tests by features simply annotate test suite
7 | * or test case with {@link ru.yandex.qatools.allure.annotations.Features}
8 | * annotation. This annotation can take either one string or a string
9 | * array because one test case can relate to several features:
10 | *
11 | *
12 | * @Features({"Feature1", "Feature2"})
13 | * @Test
14 | * public void myTest() {
15 | * ...
16 | * }
17 | *
18 | * @Features("Feature")
19 | * @Test
20 | * public void myTest() {
21 | * ...
22 | * }
23 | *
24 | * @author Dmitry Baev charlie@yandex-team.ru
25 | * Date: 25.12.13
26 | */
27 | @Documented
28 | @Inherited
29 | @Retention(RetentionPolicy.RUNTIME)
30 | @Target({ElementType.METHOD, ElementType.TYPE})
31 | public @interface Features {
32 |
33 | String[] value();
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/allure-report-face/src/data/settings/SettingsModel.js:
--------------------------------------------------------------------------------
1 | import {Model} from 'backbone';
2 | import {protoprop} from '../../decorators';
3 |
4 | export default class SettingsModel extends Model {
5 | @protoprop
6 | defaults = {
7 | language: 'en',
8 | testCaseSorting: {
9 | field: 'index',
10 | order: 'asc'
11 | },
12 | sidebarCollapsed: false,
13 | visibleStatuses: {
14 | failed: true,
15 | broken: true,
16 | canceled: true,
17 | pending: true,
18 | passed: true
19 | }
20 | };
21 |
22 | fetch() {
23 | return new Promise(resolve => {
24 | const settings = window.localStorage.getItem('allureSettings');
25 | this.set(JSON.parse(settings));
26 | resolve();
27 | });
28 | }
29 |
30 | save(key, val) {
31 | this.set(key, val);
32 | const json = this.toJSON();
33 | window.localStorage.setItem('allureSettings', JSON.stringify(json));
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/allure-commandline/src/main/java/ru/yandex/qatools/allure/command/ReportCommand.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.command;
2 |
3 | import io.airlift.airline.Option;
4 | import io.airlift.airline.OptionType;
5 |
6 | import java.nio.file.Path;
7 | import java.nio.file.Paths;
8 |
9 | /**
10 | * @author Artem Eroshenko
15 | * @Test
16 | * @Description("This is an example of my test")
17 | * public void myTest() throws Exception {
18 | * ...
19 | * }
20 | *
21 | * @author Dmitry Baev charlie@yandex-team.ru
22 | * Date: 10.24.13
23 | * @see ru.yandex.qatools.allure.model.DescriptionType
24 | */
25 | @Documented
26 | @Retention(RetentionPolicy.RUNTIME)
27 | @Target({ElementType.METHOD, ElementType.TYPE})
28 | public @interface Description {
29 |
30 | String value();
31 |
32 | DescriptionType type() default DescriptionType.TEXT;
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/allure-report-face/src/components/attachment/styles.css:
--------------------------------------------------------------------------------
1 | @import "../../variables.css";
2 |
3 | .attachment {
4 | display: flex;
5 | flex-direction: column;
6 | height: 100%;
7 | &__title {
8 | flex-shrink: 0;
9 | }
10 | &__filename {
11 | background: $heading-bg;
12 | padding: $gap-size;
13 | }
14 | &__code {
15 | font: 14px normal "Courier New" monospace;
16 | white-space: pre-wrap;
17 | word-break: break-word;
18 | margin: 0;
19 | padding: 0;
20 | }
21 | &__table {
22 | width: 100%;
23 | tr {
24 | border-bottom: 1px solid $border-color;
25 | }
26 | td {
27 | padding: 10px 15px;
28 | }
29 | }
30 | &__url {
31 | padding: 0 $gap-size;
32 | margin: 0.5em 0;
33 | &_comment {
34 | color: $text-muted-color;
35 | }
36 | }
37 | &__embed, &__media {
38 | max-width: 100%;
39 | }
40 | &__iframe {
41 | width: 100%;
42 | flex: 1;
43 | }
44 | &__media-container {
45 | text-align: center;
46 | cursor: zoom-in;
47 | .pane_expanded & {
48 | cursor: zoom-out;
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/allure-report-plugin-api/src/main/java/ru/yandex/qatools/allure/data/Widgets.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data;
2 |
3 | import javax.xml.bind.annotation.XmlAccessType;
4 | import javax.xml.bind.annotation.XmlAccessorType;
5 | import javax.xml.bind.annotation.XmlElement;
6 | import javax.xml.bind.annotation.XmlElementWrapper;
7 | import javax.xml.bind.annotation.XmlType;
8 | import java.util.Map;
9 |
10 | @XmlAccessorType(XmlAccessType.FIELD)
11 | @XmlType(name = "widgets", propOrder = {
12 |
13 | })
14 | public class Widgets {
15 |
16 | @XmlElement(required = true)
17 | protected String hash;
18 |
19 | @XmlElementWrapper(name = "plugins", required = true)
20 | @XmlElement(name = "plugin")
21 | protected Map
16 | * @Stories({"Story1", "Story2"})
17 | * @Test
18 | * public void myTest() {
19 | * ...
20 | * }
21 | *
22 | * @Stories("Story")
23 | * @Test
24 | * public void myTest() {
25 | * ...
26 | * }
27 | *
28 | * @author Dmitry Baev charlie@yandex-team.ru
29 | * Date: 25.12.13
30 | */
31 | @Documented
32 | @Inherited
33 | @Retention(RetentionPolicy.RUNTIME)
34 | @Target({ElementType.METHOD, ElementType.TYPE})
35 | public @interface Stories {
36 |
37 | String[] value();
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/allure-testng-adaptor/src/test/java/ru/yandex/qatools/allure/testng/AllureTestUtils.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.testng;
2 |
3 | import static java.nio.file.FileVisitResult.CONTINUE;
4 |
5 | import java.io.IOException;
6 | import java.nio.file.FileVisitResult;
7 | import java.nio.file.Files;
8 | import java.nio.file.Path;
9 | import java.nio.file.SimpleFileVisitor;
10 | import java.nio.file.attribute.BasicFileAttributes;
11 |
12 | public class AllureTestUtils {
13 |
14 | public static void deleteNotEmptyDirectory(Path path) throws IOException {
15 | Files.walkFileTree(path, new SimpleFileVisitor
16 | * @Attachment(value = "Page screenshot", type = "image/png")
17 | * public byte[] saveScreenshot(byte[] screenShot) {
18 | * return screenShot;
19 | * }
20 | *
21 | * @author Dmitry Baev charlie@yandex-team.ru
22 | * Date: 15.05.14
23 | *
24 | * @since 1.4.0
25 | */
26 | @Documented
27 | @Retention(RetentionPolicy.RUNTIME)
28 | @Target(ElementType.METHOD)
29 | public @interface Attachment {
30 |
31 | /**
32 | * Attachment name
33 | */
34 | String value() default "{method}";
35 |
36 | /**
37 | * Valid attachment MimeType, for example "text/plain" or "application/json"
38 | */
39 | String type() default "";
40 | }
41 |
--------------------------------------------------------------------------------
/allure-report-data/src/main/resources/xsd/bindings.xjb:
--------------------------------------------------------------------------------
1 |
2 | in is null
20 | */
21 | public BadXmlCharacterFilterReader(Reader in) {
22 | super(in);
23 | }
24 |
25 | /**
26 | * Reads characters into a portion of an array, then replace invalid XML characters
27 | *
28 | * @throws IOException If an I/O error occurs
29 | * @see ru.yandex.qatools.allure.config.AllureNamingUtils#isBadXmlCharacter(char) by space
30 | */
31 | @Override
32 | public int read(char[] cbuf, int off, int len) throws IOException {
33 | int numChars = super.read(cbuf, off, len);
34 | replaceBadXmlCharactersBySpace(cbuf, off, len);
35 | return numChars;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/allure-java-adaptor-api/src/main/java/ru/yandex/qatools/allure/events/StepFailureEvent.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.events;
2 |
3 | import ru.yandex.qatools.allure.model.Status;
4 | import ru.yandex.qatools.allure.model.Step;
5 |
6 | /**
7 | * Using to mark current step as failed and attach for it {@link Throwable}
8 | *
9 | * @author Dmitry Baev charlie@yandex-team.ru
10 | * Date: 11.11.13
11 | *
12 | */
13 | public class StepFailureEvent extends AbstractStepFailureEvent {
14 |
15 | /**
16 | * Change step status to {@link ru.yandex.qatools.allure.model.Status#FAILED} if
17 | * throwable instance of AssertionError and to {@link ru.yandex.qatools.allure.model.Status#BROKEN}
18 | * otherwise
19 | *
20 | * @param step which will be changed
21 | */
22 | @Override
23 | public void process(Step step) {
24 | Status status = throwable instanceof AssertionError ? Status.FAILED : Status.BROKEN;
25 | step.setStatus(status);
26 | }
27 |
28 | /**
29 | * Set specified throwable to event using fluent-api interface
30 | *
31 | * @param throwable the throwable to set
32 | * @return modified instance
33 | */
34 | public StepFailureEvent withThrowable(Throwable throwable) {
35 | setThrowable(throwable);
36 | return this;
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/allure-report-data/src/test/groovy/ru/yandex/qatools/allure/data/plugins/PluginsIndexTest.groovy:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.data.plugins
2 |
3 | import com.google.inject.Guice
4 | import com.google.inject.Inject
5 | import groovy.transform.EqualsAndHashCode
6 | import org.junit.Test
7 | import ru.yandex.qatools.allure.data.AllureGuiceModule
8 |
9 | /**
10 | * @author Dmitry Baev charlie@yandex-team.ru
11 | * Date: 10.07.15
12 | */
13 | class PluginsIndexTest {
14 |
15 | @Test
16 | public void shouldBeSingleton() throws Exception {
17 | def injector = Guice.createInjector(new AllureGuiceModule(getClass().classLoader))
18 |
19 | def first = new SomeClassWithIndexInject()
20 | def second = new SomeClassWithIndexInject()
21 | injector.injectMembers(first)
22 | injector.injectMembers(second)
23 |
24 | assert first.index == second.index
25 | }
26 |
27 | class SomeClassWithIndexInject {
28 |
29 | @Inject
30 | PluginsIndex index
31 | }
32 |
33 | @EqualsAndHashCode
34 | class SomeInjectable {
35 | String value
36 | }
37 |
38 | abstract class SomePlugin {
39 | Class
12 | * @Parameter("My Param")
13 | * private String myParameter;
14 | *
15 | * @Test
16 | * public void myTest() throws Exception {
17 | * myParameter = "first";
18 | * myParameter = "second";
19 | * myParameter = "third";
20 | * }
21 | *
22 | * All three values will be added to report
23 | *
24 | * Note that the initializations of constant fields (static final fields
25 | * where the initializer is a constant string object or primitive value)
26 | * are not join points, since Java requires their references to be inlined.
27 | *
28 | * value - it's name of parameter, field name by default
29 | *
30 | * @author Dmitry Baev charlie@yandex-team.ru
31 | * Date: 19.06.14
32 | *
33 | *
34 | */
35 | @Documented
36 | @Retention(RetentionPolicy.RUNTIME)
37 | @Target({ElementType.FIELD, ElementType.PARAMETER})
38 | public @interface Parameter {
39 |
40 | String value() default "";
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/allure-report-face/src/variables.css:
--------------------------------------------------------------------------------
1 | $brand-blue: #0044bb;
2 | $brand-red: #ff0000;
3 |
4 | $color-passed: #97cc64;
5 | $color-failed: #fd5a3e;
6 | $color-broken: #ffd050;
7 | $color-canceled: #aaa;
8 | $color-pending: #d35ebe;
9 |
10 | $background-passed: #a6e19d;
11 | $background-failed: #ffaca6;
12 | $background-broken: #ffeca0;
13 | $background-canceled: #cccccc;
14 | $background-pending: #ecb7e2;
15 |
16 | $header-bg: #fff;
17 | $heading-bg: #f6f5f3;
18 | $body-bg: #fff;
19 | $content-bg: #fff;
20 |
21 | $border-color: #ECEFF1;
22 | $border-accent-color: #e5e5e5;
23 |
24 | $hover-color: #e4edfe;
25 | $selected-color: #ffeca0;
26 | $summary-color: #f6f5f3;
27 |
28 | $text-color: #000;
29 | $text-muted-color: #999;
30 |
31 | $gap-size: 15px;
32 |
33 | $small-screen: 1000px;
34 |
35 | /* Sidebar **/
36 |
37 | $sidebar-full-width: 180px;
38 | $sidebar-collapsed: 60px;
39 |
40 | $sidebar-separator-color: #4d4d4d;
41 | $sidebar-active-accent-color: #64B5F6;
42 | $app-nav-bg: #343434;
43 | $sidebar-active-text-color: #fff;
44 | $sidebar-hover-text-color: #fff;
45 | $sidebar-brand-color: #fff;
46 | $sidebar-text-shadow-color: #000;
47 |
48 |
49 | /* Links */
50 |
51 | $link-color: #1976D2;
52 | $link-color-hover: #f00;
53 |
54 | /* Pane set */
55 |
56 | $pane-bg-color: #fff;
57 | $pane-border-color: #cdd0d2;
58 | $pane-overlay-bg: rgba(240, 240, 240, 0.4);
59 | $pane-overlay-bg-hover: rgba(240, 240, 240, 0.2);
60 |
--------------------------------------------------------------------------------
/allure-java-adaptor-api/src/main/java/ru/yandex/qatools/allure/events/StepStartedEvent.java:
--------------------------------------------------------------------------------
1 | package ru.yandex.qatools.allure.events;
2 |
3 |
4 | import ru.yandex.qatools.allure.model.Status;
5 | import ru.yandex.qatools.allure.model.Step;
6 |
7 | /**
8 | * Using to start new step
9 | *
10 | * @author Dmitry Baev charlie@yandex-team.ru
11 | * Date: 11.11.13
12 | *
13 | * @see ru.yandex.qatools.allure.Allure
14 | */
15 | public class StepStartedEvent extends AbstractStepStartedEvent {
16 |
17 | /**
18 | * Constructs an new event with specified name
19 | *
20 | * @param name initial name value
21 | */
22 | public StepStartedEvent(String name) {
23 | setName(name);
24 | }
25 |
26 | /**
27 | * Sets name, status, start time and title to specified step
28 | *
29 | * @param step which will be changed
30 | */
31 | @Override
32 | public void process(Step step) {
33 | step.setName(getName());
34 | step.setStatus(Status.PASSED);
35 | step.setStart(System.currentTimeMillis());
36 | step.setTitle(getTitle());
37 | }
38 |
39 | /**
40 | * Sets title using fluent-api
41 | *
42 | * @param title value to set
43 | * @return modified instance
44 | */
45 | public StepStartedEvent withTitle(String title) {
46 | setTitle(title);
47 | return this;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/allure-report-face/src/components/testcase-table/TestcaseTableView.hbs:
--------------------------------------------------------------------------------
1 |