text: /*
   *  Copyright 2019 Qameta Software OÜ
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing, software
   *  distributed under the License is distributed on an "AS IS" BASIS,
   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *  See the License for the specific language governing permissions and
   *  limitations under the License.
   */
  package io.qameta.allure.test;
  
  import io.qameta.allure.Feature;
  
  import java.lang.annotation.Documented;
  import java.lang.annotation.ElementType;
  import java.lang.annotation.Inherited;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.lang.annotation.Target;
  
  /**
   * @author charlie (Dmitry Baev).
   */
  @SuppressWarnings({"JavadocType", "PMD.MissingStaticMethodInNonInstantiatableClass"})
  @Target({})
  public @interface AllureFeatures {
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Basic framework support")
      @interface Base {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Parallel test execution support")
      @interface Parallel {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Full name")
      @interface FullName {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Display name")
      @interface DisplayName {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Descriptions")
      @interface Descriptions {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Timings")
      @interface Timings {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Steps")
      @interface Steps {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Attachments")
      @interface Attachments {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Parameters")
      @interface Parameters {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Fixtures")
      @interface Fixtures {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Links")
      @interface Links {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Marker annotations")
      @interface MarkerAnnotations {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Failed tests")
      @interface FailedTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Broken tests")
      @interface BrokenTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Passed tests")
      @interface PassedTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Skipped tests")
      @interface SkippedTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Ignored tests")
      @interface IgnoredTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Not implemented tests")
      @interface NotImplementedTests {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("History")
      @interface History {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Retries")
      @interface Retries {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Stages")
      @interface Stages {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Trees")
      @interface Trees {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Timeline")
      @interface Timeline {
      }
  
      @Documented
      @Inherited
      @Retention(RetentionPolicy.RUNTIME)
      @Target({ElementType.METHOD, ElementType.TYPE})
      @Feature("Timeline")
      @interface Severity {
      }
  }
  