@startuml
skinparam component {
    BackgroundColor Gold
    BorderColor DarkOrange
    BackgroundColor<<External>> LightGray
    BorderColor<<External>> Blue
    BackgroundColor<<Idp>> LightGreen
    BorderColor<<Idp>> Green
    BackgroundColor<<Other>> DeepSkyBlue
    BorderColor<<Other>> Blue
    BackgroundColor<<NextRelease>> LightGray
    FontColor<<NextRelease>> Gray
    BorderColor<<NextRelease>> Gray
    ArrowColor<<HTTP>> DodgerBlue
    FontColor<<HTTP>> Gray
    ArrowFontColor DarkOrange
    ArrowThickness 1
}

skinparam interface {
    BorderColor<<HTTP>> DodgerBlue
}

    component TigerProxy as tp <<Other>>
    component TigerEnvMgr as tem <<Other>>
    component polc <<Other>> [PolarionToolbox
      ===
      parses feature files for annotated scenarios
      imports those scenarios as test cases to Polarion
      merging existing and creating new test cases based on internal id
      TODO utilizes the test result parser and stores test run results
      from serenity via Aurora into a test run in Polarion
    ]

    package TigerTestLib {
      component "Basic steps" as bs
      component jsonchck [JsonChecker
        ===
        allows to use regex based docstrings to compare received JSON data
        includes tree support allowing to assert multi level JSON data
        supports Context and Variables in docstrings

      ]
      component tgcfg [TigerGlobalConfiguration
        ===
        provides a map to store configuration properties,
        contextual values, test execution variables
        in a "world object" to be available between bdd steps.

        can be used thread safe by using appropriate SourceType

        supports hierarchical domains to allow separation of data
        from different suites
      ]
'        similar to Context provides a map based storage for
'        variables that can be used with ${VAR.xxxxx} in steps
      component rbelcli [Rbel Messaging Client
        ===
        connects to the Tiger proxy and receives all traffic
        provides structured data objects for request and response
      ]
      component aforep [AfoReporter
        ===
        parses feature files, requirements JSON and serenity results
        creates the afo coverage report HTML
      ]
      component codepars [TestCodeParser
        ===
        supports parsing BDD and Java Junit/TestNG test code
      ]
      component resparse [TestResultParser
        ===
        supports parsing Serenity JSON and JUNIT xml results
      ]
      component serint [SerenityBDDIntegration
        ===
        attaches the RBel messages as test evidence to scenarios in serenity report
        allows to attach curl call descriptions to steps in SerenityBDD report
        integrates the afo coverage report to SerenityBDD report
      ]
      component banner [ASCII banner
        ===
        allows to display large ascii banners in console/log output
        for ansi color compliant consoles also coloring is supported
      ]
      component testcfg [TigerSerializationUtils
        ===
        provides support for parsing and mapping yaml or JSON files.
        allows to manage multiple sets of config files,
        so its easy to e.g. switch from RU to TU test config.
      ]

      component tth [TigerTesthook
        ===
        SerenityIntegration, Rbel Messaging Client,
        Context, Variables and TestConfig via
        TigerGlobalConfiguration
        are all created automatically at
        initialisation time of the BDD test run
        utilizing the TigerTestHook class.
        Behaviour can be configured via properties
        files and environment variables
      ]
    }

    aforep -down-> codepars : parse test scenarios
    aforep -down-> resparse : parse serenity test results

    polc -up-> codepars : parse test scenarios

    serint -down-> aforep : trigger afo report generation

    bs -down-> tgcfg : use
    bs -down--> jsonchck : use
    bs -left-> serint : use

    bs -down-> tem : create test system instances at runtime

    bs <-right- rbelcli
    tp -left-> rbelcli

    tth --> codepars: use
    tth -up-> serint : triggers
    tth --> tgcfg: use
@enduml
