Giter VIP home page Giter VIP logo

ytestbook's Introduction

yTestbook

What is yTestbook?

It's a free web application to manage software tests. It's mainly intended for handling manual tests, but it could support automatic tests as well.

What does it do?

It allows you to define:

  • what you want to test (we call it test cases);
  • how you expect your software works in different scenarios (tests);
  • for each test, you can describe all the steps required to run it.

You can also organize your tests using tags.

Then you can manage test sessions, sunning tests and tracking success and failures, adding comments, assigning tasks and much more.

At any time, you can monitor progress and evaluate problems.

You can look at initial analysis in the docs folder.

ytestbook's People

Contributors

alefalezza avatar axelpezzo avatar

Stargazers

Luca Maroni avatar

Watchers

Umberto Gariggio avatar Daniel Jonasson avatar Denis Signoretto avatar Nicola Bosco avatar Filippo Dolci avatar  avatar  avatar Niccolò Pasquetto avatar Henrique de Almeida avatar

ytestbook's Issues

Local-First Web Development

Context

As far as we thought about this application we known that it should work with two pre-requisites:

  1. Have persistent data

but also

  1. Work without a backend

Those requisites has a lot in common with the local-first web development pattern and we want to proceed in that way.

We couldn't say if in the future we could implement a proper backend server, but for the moment this app should work as stand alone with local persistent data shared between the browser session with some kind of technology.

Proposed solution

One of the most used technologies is RxDB which allow the application to store the data in a offline database with the possibility to syncronize the data with some custom endpoint or download it in a json as well.

I already tested this library with a PoC inside the develop branch.

The documentation is pretty good but there are some inconguences through the versions and some missing useful examples.

Alternatives

Alternativelly, we could going though with two different libraries:

Comments entity should include a reference to a collaborator

ATM Comments type is

export type TCommentDynamicData = {
  username: string;
  content: string;
};

export type TComment = {
  id: string;
  caseId: TCase["id"];
  testId?: TTest["id"];
  stepId?: TStep["id"];
  createdAt: number;
  testStatusWhenCreated?: StatusEnum;
  resolved: boolean;
} & TCommentDynamicData;

This way we cannot easily use the Avatars component to show the user's Avatar (in comments list, for example).

We could change it into something like :

export type TCommentDynamicData = {
  collaboratorId: string;
  content: string;
};

Setup PWA properties

We should think about this application as an offline application that work locally without any persistent data stored online.
This choice was made in due to the fact that this app should be straightforward and work as stand alone application without a backend that syncronize the data.

This issue was open to setup the application properties in order to make it works as an PWA.

  • Work with persistent offline data
  • Focus on performance
  • Offline data and asset

https://web.dev/learn/pwa/
https://www.halo-lab.com/blog/react-pwa-tutorial-how-to-create-progressive-web-app-with-react

Fix EditableHtmlText empty status

When selecting a Test/TestCase with no description, if a description was already set on the previous Test/TestCase, the component won't update correctly

UI Components + storybook

Once the UI Kit is chosen we need to start to disassemble the static mockup building the UI common components as button, tables, views, link, ecc...

Each component shouldn't used directly from the UI Kit but it should be wrapper inside a custom component with some props in order to customize it.

Also, we need to implement a storybook library in order to document the component as stand alone.

Add repository infos

Add infos to repository:

  • title
  • description

Should be edited in the "home" section

image

Those should be exported and imported via JSON

Layout + Navigation

Once the UI Kit is chosen we need to focus to implement the main layout of the application and then start to think about the navigation between the pages.

Choose a UI Kit

Context

We need a strong and consinstent library in order to build our application which allow us to customize and build the layout without any complication. The library should be complete with the possibility to customize in an easy way each part of the layout and the theme.

Proposed solutions

A pretty good UI Kit for this Application could be Mantine which I already used on this project to build the PoC in the develop branch.

I think that one of his stringest point is the "Mantine Hooks" that this UI Kit provides in order to abstract the theme logic. Also, the library includes a feature in order to handle the forms logic (they have done an excellent job here) with mantine hooks and components.

The library has a good and strong documentation with a lot of examples and explanations.

Alternatives

We could think to use Ant Design or Material UI.

Plan/Members: dynamize the section

Dependencies: #10

The section page should show a list of members (users) that has "in charge" the conducting of tests. The users has only the job to be listed inside the Test details, there is no authentication logic behind this.

This page should has the same layout of the Use Cases page (title, table, new item, ecc...) with the possibility to: browser the users, add a new member and see his details.

Add Filters in Overview sidebar

Image

Add filters in overview sidebar and handle the show/hide of the tasks table elements

Image

Selects also have a custom dropdown style

Create automerge server url form

Create a form where is possible to set the automerge server url.

It should be possible to set an empty value showing it as a "use yTestbook offline" option.

This "automerge server url" value should be also set in LOCAL_STORAGE.

Add tests button should add an inline row to the table

Add buttons should add an inline row at the bottom of the table.

This is valid for tasks, subtasks and steps.

The title would be enough for a new item creation.

More details of the task/subtask should be added inside the content details.

Use modals imperatively and not declaratively

As I was saying in this PR it's usually better to handle modals imperatively through Mantine's Modal Manager.

This allows to:

  • keep the flow of the events, making it easier to debug for everyone by avoiding using effects
  • improve the callback handlers
    • modals are opened in the button's onClick/handler, and params can be passed directly from the list instead of having to save and rerender the whole component
  • avoid reinventing the wheel for every modal
    • e.g. having to add a piece of state just to know if the modal is opened or closed

IMO, this behavior should be used for ALL the modals, whether they are confirm modals or not

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.