Giter Club home page Giter Club logo

scenarioo's Introduction

Scenarioo

Automated Documentation of Applications with UI Tests

Scenarioo is a tool to leverage the power of your UI tests and to make them available as a documentation of your software system to all people involved in the design, development, test, operation and management of your software system.

Webpage & Documentation

For more information about Scenarioo, see the following resources:

Live Demo

You can see an example Scenarioo documentation and the Scenarioo Viewer Web App in action in our demo:

http://demo.scenarioo.org

Downloads & Links

Downloads and more links, even for different releases (like forthcoming release candidates) can be found under Downloads & Links

CI/CD Build Server

https://circleci.com/gh/scenarioo

Master: Latest Stable Release Build Status

Develop: Current Development State Build Status

License

Scenarioo is mainly distributed under GNU General Public License, which enables you to use the tool freely.

The Writer Libraries use GNU license with linking exception, for freely linking it even in your commercial products (if needed at all).

Most examples are provided using BSD license, which even allows you to copy these code examples freely.

See LICENSE.txt and further LICENSE-files for different licenses of different components in some subproject folders and especially in our separate library and example repositories, hosted under https://github.com/scenarioo

scenarioo's People

Contributors

adiherzog avatar andreamathis avatar bollimic avatar bruderol avatar cgrossde avatar danielsuter avatar davidlahner avatar dependabot[bot] avatar dogen91 avatar dola avatar featureenvy avatar forkch avatar fredericson avatar hofmaier avatar ideco avatar kabl avatar lynparbone avatar magitnu avatar mi-we avatar myrionphoenixmoon avatar parabolika66 avatar patrickschweizer avatar sandraweber avatar sascha-kaufmann avatar sebastianzillessen avatar sne avatar steffischlumpf avatar stuckisimon avatar til77 avatar xeronimus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scenarioo's Issues

Introduce HTTP Caching

As a user I want to have my pages faster loaded and on the other hand not to display any outdated browser cached data.

  • Introduce caching and proper Http-Etag-Handling for only calculating and sending data in case it really changed.
  • Make sure that data is not cached too long (currently we have a problem in IE with the builds page for example), see also #276

E.g.see following links for more information on caching with RESTeasy:

http://docs.jboss.org/resteasy/docs/1.2.GA/userguide/html/Cache_NoCache_CacheControl.html

http://howtodoinjava.com/2013/06/05/jax-rs-resteasy-cache-control-with-etag-example/

following very good tutorial about HTTP caching is also rcommended to consider:

https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching

Top level navigation

As a user I always want to see where I am:

  • breadcrumbs for selected use case, scenario,page, step etc. (as in prototype)
    • example: home>>MobileActivation>>postpaid_inport>>select_services.jsp
  • possibility to go back in this navigation path

XML schema files for webtest-generated files

As a web-test writer I want to have the XML schema of the files I have to generate. For Java-Developers, there will be an API (see #48), but the file format should also be easily usable from other platforms.

  • The fields in the schema have adequate comments.

Scenario Overview View

As a user I want to quickly get an overview of a scenario and to search inside the steps of a specific scenario.

  • scenario overview displays the pages of a user scenario with their steps in a tree (steps of a page may be expanded, are initialy closed)
  • for each page the following information is displayed:
    • page number inside scenario
    • name of the page
    • title of the page
    • number of substeps
    • (opt) description
    • first step image (small/cropped)
  • when expanded the following information is shown for each step inside a page:
    • step number inside its page
    • name of the page
    • title of the page
    • (opt) description
    • step image (small/cropped)
    • keywords (additional text for filtering, e.g. for searching service calls or other step meta information)
  • a page with only one step can not be expanded
  • a step can be selected, which opens the step view for this specific step
  • the tree table can be searched/filtered which will expand all rows that match the searched text

Needed REST service:

  • scenario steps

DOM-Page-View

As a user I would like to see just the rendered DOM of a page (instead of screenshot), to search in text or to interact with page (showing popups?)

  • in separate tab the user can browse the page (its DOM tree rendered in an iFrame)

Example Documentation Data

As users of the ngUSD we want to have a simple example to see how the docu content that a project has to generate for ngUSD has to be structured.

As developers we want to have some example data, that is checked in and that represents the current expected state of input documentation files.

  • The example is simple and understandable by everybody
  • also pictures are contained
  • also we should provide WSDLs for all XML file types
  • also update and improve the documentation in the WIKI on what files and directory-structure a build has to generate to provide useful content to the ngUSD

Enhance Logging

At the moment we just print staff at "sys.out" interduce a logging!

Fullscreen View

As a user I want to look at the screens in original resolution.

  • When clicking on the screenshot the presentation changes such that I see the screen in full screen view.
  • using the usual keys navigation from step to step is still possible in fullscreen view.
  • clicking again or pressing ESC will go back to usual step presentation

Real Selenium Webtest Example for creating a documentation

As a user of scenarioo and as a developer I want to have a simple example at hand that demonstrates how to write webtests that generate documentation content.

  • Example with Selenium Tests
  • well structured with page objects and selenium abstraction API

No build lable color

the mapping isn't right:

Mapping:

success->label-success
warning->label-warning
failed->label-important

but the status is "green" in the build.xml

add additional mapping or define the mapping correct

Configuration UI

As a user I want to have the possibility to configure the UI, by e.g adding columns or fields to display application specific informations.

As an admin user I can store these settings for all users.

As an admin user I also want to configure all important settings through a configuration UI

See user story about configuration.

Setup tomcat server

  • Tomcat server and deployment from eclipse
  • Easy possibility to develop and (re-)deploy server during development

Probably already done??

Service Navigation

As a user I want to search for services in my call trees to find all steps that contain these services.

  • display all services (or other function blocks in my call trees) grouped by their call type (one subtab per call type) with following information:
    • call name
    • description
    • ...
  • search/filter these calls
  • let user select one to display all use cases & scenarios & pages/steps, where this service is used
  • Let user jump from this search results into the page steps where the calls occur

Step Variants Navigation

As a user I want to navigate different variants of a page from other scenarios.

  • Additional to the usual forward/back navigation there is an additional (vertical?) navigation to navigate through variants of the same page in other scenarios (up/down)
  • the navigation displays following information:
    • number of variants of the page in total
    • number of this page in this navigation
  • the user can decide whether to step through variants with only small changes, or to make fast forward/backward to variants with a lot of differences

Needed rest service:

  • page variants index
  • the service tries to classify/cluster somehow in variants that have hughe differences and such variants that are only considered as subvariants, this may be realised by diff-distances on diffs of the pages dom-trees, therefore we have to introduce dom-trees on the documentation model (non webapps could just provide another tree structure of their page structures to analyse structural differences of pages)

Observe Documentation Directory

As a user I want to see new generated builds as fast as possible.

  • Documentation directory is observed for new branches and builds directories.
  • As soon as there is a new build directory, this directory is observed and scheduled for data aggregation.
  • Data aggregation on a build directory is started when there seems to be no change anymore (for at least 10 seconds) in a build directory.

Build for Deployment

For releases we need a packaging of the whole webapp (client and server together) inside one WAR-File for easy deployment.

  • a automatic build script that packages our webapplication together in a WAR file (including the angular client)
  • some easy installation intstructions on how to deploy/install our webapplication on a tomcat (in WIKI).
  • make the latest binary/release-package somehow available for download on the project webpage.

Advanced search / full text search

As a user I want to search in all content from one simple UI (as on google).

I want to search for following things:

  • visible text on pages
  • HTML source code
  • use case / scenario names and descriptions
  • called services
  • all metadata

Introduce usable table component

As a user I want to see nicely styled tables with easy to use support for searching/filtering, sorting, expandable subtrees.

Introduce a usable filter-table component with following functionality:

  • good searching: searching for multiple words in any order inside same table row, search as you type
  • sortable columns: freely sortable by user, also multiple columns
  • support for trees inside (expandable rows)

Implementation:

Check if the JQuery table component already used in prototype is an option?

Continuous Integration Server

As developers we want to get continuous feedback about quality of our software and have the ability to automatically build a new release each time we checkin a new feature or a bugfix.

This is important to make it easy for other projects to use the ngUSD and have the ability to fix bugs or add important new features fast, in case they need to.

  • Build runs on a continuous integration server
  • Build includes automatic tests (unit tests and e2e tests)
  • Build builds a new release for deployment (downloadable package)

Implementation:
Use a cloud solution for CI, eg. Cloudbees?

Use Cases and Scenarios Navigation

As a user I want to be able to navigate all Use Cases and User Scenarios in the current build.

  • display a table of all use cases with following informations:
    • name
    • description
    • test class name
    • number of scenarios
    • green/red/orange
  • the table may be filtered
  • a use case can be selected
  • display a table of all scenarios of a use case with following informations:
    • name
    • description
    • number of pages
    • number of steps
    • red/green/orange
  • the table may be filtered
  • a scenario can be selected
  • there is an additional view to display and search in all user scenarios of all use cases, this additional view combines the use cases view and the scenarios view in one view (searchable table/tree), it is also possible to select a scenario from here

Needed REST service:

  • list of use cases
  • list of scenarios for one use case
  • list of all scenarios for all use cases

Advanced UI for browsing page variants (in other scenarios)

As a user I want to have a more advanced UI for browsing efficiently through the different variants of the same page.

Some ideas:

  • a special page variants browsing UI (instead of the current generic "object page" references tree), maybe with kind of a carousel: browsing slowly to see similar variants, browsing fast to jump to variants of the page with huge differences in the screenshot.
  • clustering of page variants and order page variants by differences: see the most typical differences faster and browse to them.
  • direct "fast forward" navigation on step page: to go to the next scenario with same page (instead of staying in the same scenario)
  • Detect page variants that are the same and do not show these more than once (or only if user want to see them)

It has to be clarified first, what the best UI design and behaviour would be, such that the user still understands what is going on to browse inside this clustering of page variants.

Versioning of generated docu files

As a user I want to get newest version of data aggregation for my existing already preprocessed documentation builds.

  • put version.properties into each build directory to remember which version of ngusd processed the input data
  • retrigger the generation of aggregated data for a build on server startup, when version is different from current webserver version.

Java API to simply create ngUSD docu content

as a Java Developer I want to have a simple library at hand to support me in writing out the needed documentation content files.

  • independent of any webtesting framework (this is another story)
  • supports the developer in simply writing the needed XML files into the correct directory structure

REST Server Processing and Caching

As a user I do not want to wait for a request too long until the server aggregated all the data needed.

Pre-Processing:

  • generate additional xml files with precalculated data (e.g. BranchBuilds, PageSteps, StepPage, etc.)
  • Also considrer the sorting of elements (especially the branches and builds)

Caching:
The builds and branches should be kept in memory, since requested on every page

Out of Scope:
Http-Caching, I introduced another story for this.

Move github reporsitory to an organization

As soon as we have found a better name for our project we should move this project to a new repository on an organization account such that we can easier collaborate and administrate the account in collaboration.

Code Quality Tool for Webstorm

We want to have a tool / tool configuration checking for code quality in Webstorm which will not show (m)any false-positives for angular.

Fallback for Use Case and Scenario URLs

As a user I want to have as much stable URLs as possible.
For the step page, this was implemented in Release 2.0.0.

  • In case a use case name, scenario name or page name from URL can not be found, simply try to choose the name that is the most similar
  • In these case show a warning, that the exact link could not be found and maybe outdated

We could also implement a fallback strategy:

  • If the scenario can not be found, show the use case page with a message.
  • If the use case can not be found, show the Scenarioo start screen with a message.

Call Tree View

As a user I want to see the call tree on my pages (what code has been executed during last request, down to services).

  • Display call tree
  • for each call following information is displayed:
    • Call name
    • Call type
    • request (parameter values or xml)
    • response
    • child calls
  • usual search/filtering inside this tree is possible
  • possibility to select which type of calls (layers) to display in the tree (in case a user is only interested in one layer/type of calls, e.g. only services, only managers or only struts actions).

Setup project Wiki

Setup WIKI on github with following:

  • Initial project WIKI
  • Initial developer information about development environment

Scenario Steps Navigation

As a user I want to navigate step by step through the steps of a user scenario.

  • the scenario step view displays one specific step of a user scenario
  • there is a navigation to navigate to next and previous step
  • there is also a navigation to navigate to next and previous page
  • displayed information about current step:
    • page number and name, number of pages in scenario
    • step number inside this page and number of steps in same page
    • step number inside whole scenario and total number of steps in scenario
    • Full Screenshot, as big as possible
    • Additional meta information, which is very application specific, key value pairs, with possibility for formatted text (e.g. URL, Struts-Actions, ...)
  • html code in separate tab
  • out of scope: call tree, jdom view

Special URL requirements to take into account:

  • The URL of a step consists of following:
    • use case id
    • user scenario id
    • page id
    • number of appearance of the page, in case it appears more than once
    • number of the step inside the page
  • In case the step number is bigger than the number of steps on the selected page, choose the last step
  • in case the number of the appearance of the page is bigger than allowed, choose the last appearance of the page

For this story two rest services are needed:

  • step of page including most important details, metadata, page, and other navigation information (next step, previous, number of pages etc.)
  • get step html

Furthermore the screenshot images need to become available as static web resources for this story.

Welcome message and Help information

As a user I want to see some welcome message and have the possibility to get information/help about the most important navigation keys, etc.

  • When user navigates to the docu for the first time, a welcome popup is displayed with some introduction to the user scenario docu and how to use it (see prototype)
  • the popup is not displayed when navigating tot he user docu a second time with the same browser (cookie never expiring or so)
  • the popup can be opened using the "info" or "help" Link in the top navigation

Branches and Builds Navigation

As a user I want to be able to switch between different builds of different branches.

  • switching between branches and builds is possible in top navigation
  • the user always sees which branch and build is selected and can easily change this selection
  • per default the branch with name "trunk" (configurable) and the build with name "current" (configurable) is selected
  • URLs do not have to contain the branch/build ids, in this case these URLs refer to the last selected branch/build (or the default)
  • All USD-URLs may additionaly contain the branch/build which will select the according branch/build
  • the branches/builds-view displays an overview of all branches and their builds with most important informations about these builds like:
    • branch name
    • (opt) branch description
    • build name
    • build date/time
    • build green/red/orange
  • a build may also be selected in the branches/builds view

Needed REST Services:

  • list of branches
  • list of builds

Configuration

As a documentation operator/admin I want to be able to configure the following things through configuration files (from outside the WAR deployment):

  • default branch/build
  • directory to read builds from
  • directory to manage generated data inside
  • possible build states and their colours/icons
  • for each view: additional fields/columns to display from details maps

Branches and Builds View

As a user I want to see detail informations for builds and search in it

  • the view should be on the start page in a separate tab "builds" (besides the other tabs "use cases", "scenarios" and "services")

Improve table component filtering

As a user I want to search for two (or more) words in the table rows to find use cases or scenarios and other table entries which contain these words (in any order).

Acceptance criterias:

  • Typing more than one word, separated by spaces, into the filter text box, will find all entries somehow containing these words (in arbitrary order)
    • Some examples:
      • "mobile activation" will find rows containing texts like "MobileActivation", "Mobile blabla activation", "Activation for mobile", "MobileBlablaActivation"etc.
  • The filter search is case insensitive (no matter whether the text is upper or lower case, or mixed, it will find it).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.