Giter Site home page Giter Site logo

logofx / samples.specifications Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 2.0 2.38 MB

This sample demonstrates how to use specifications and convert them to the acceptance tests.

License: MIT License

C# 96.00% Gherkin 4.00%
dotnet wpf mvvm mvvm-architecture mvvm-pattern specflow specflow-steps csharp tdd bdd

samples.specifications's Introduction

Samples.Specifications

One of the missing points in the software development cycle often lies in the gap that develops over time between the initial product specifications, as stated by the product managers and their actual implementation/interpretation as carried out by the developers. This can be addressed by creating a unit/integration test suite which will provide a safe net for future changes. However having only unit/integration tests will preserve the gap as the product managers are not familiar with the code and the actual testing/isolation frameworks that the developers chose to use, if any. Therefore there's a need in bridging between the product managers/business experts and the development team. This issue can be addressed by using a dedicated behavior-specifying framework. For documentation go to https://github.com/LogoFX/Samples.Specifications/wiki

samples.specifications's People

Contributors

dmitrybublik avatar glyad avatar godrose avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

samples.specifications's Issues

Inconsistent selection behavior in end-to-end tests

TestStack.White.UIItems.ListViewRow cannot be selected normally. The method Select() doesn't work. For selection emultaion we use trick:

listViewRow.Focus();
listViewRow.Cells[0].Click();

But this trick works unstable. It is better add big delay between Focus() and Click():

listViewRow.Focus();
Task.Delay(1000).Wait();
listViewRow.Cells[0].Click();

Use dedicated build jobs for every configuration

Should define specific .yaml files for each one of the 4 available configs:

  • EndToEndWithFake - should build the client in DebugWithSpecs config and the e2e specs in EndToEndWithFake config

  • IntegrationWithFake - should build the integration specs in IntegrationWithFake config

  • EndToEndWithReal - should build the client in DebugWithSpecs config and the server in DebugWithSpecs config and the e2e specs in EndToEndWithReal config

  • IntegrationWithReal - should build the integration specs in IntegrationWithReal config and the server in DebugWithSpecs config

The close guard is missing in edit/new state.

Then I edit new or existed record and click to window close button, the application is closed without a confirmation. In my opinion, it's a good use case sample to specification, since it one of the frequently tested problems in real applications.

The expected behavior is following:
Then [I click Windows close button ("x") or application "Close" button] and I have unapplied changes in the form, I want to see a guard message.
There are three options with a guard message box expected:

  1. Save == to save changes and close the app;
  2. Don't Save == exit without to save;
  3. Cancel == do not exit.

Interesting case: what should happen, if I press "Save" and have invalid data, or I press "Save", but the save operation is failed?

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.