Coder Social home page Coder Social logo

argos-ci / argos Goto Github PK

View Code? Open in Web Editor NEW
365.0 8.0 28.0 57.11 MB

Visual Testing for modern web apps. Review visual changes in your development workflow.

Home Page: https://app.argos-ci.com

License: MIT License

JavaScript 7.57% Shell 0.03% Procfile 0.03% TypeScript 92.05% CSS 0.16% HTML 0.16%
testing testing-tools visual-testing

argos's Introduction

Argos

Argos is a visual testing solution that fits in your workflow to avoid visual regression. Takes screenshots on each commit and be notified if something changes.

Argos Visual Testing CI

Links

Contributing

Changes and improvements are more than welcome! Please make your changes in a specific branch and request to pull into main! To learn more about it, have a look at our CONTRIBUTING.md.

argos's People

Contributors

bpaquet avatar dependabot[bot] avatar gregberge avatar isc avatar jsfez avatar nav-2d avatar nicgirault avatar oliviertassinari avatar rpellerin avatar ryota-murakami avatar shaodahong avatar t-mdo 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  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

argos's Issues

Allow a max score on some screenshot

As a user, I have a simple and inefficient way to filter out flaky tests.

Motivation

While flaky tests can be fixed, I would expect any new product using the service to have quite some unpredictable screenshots. The solution I'm proposing is far from perfect but can be easily implemented.

Detail

Notify GitHub in a separated job

Notifications should be done in an other job in order to track notifications in database and to be able to replay them if an error occurs.

Link the build summary to GitHub

As a user, I can click on the build summary link and go back to GitHub.

Motivation

We constantly switch between services, the easier the better.

Detail

We gonna need to get the repository base url.

CLI command: diff

When I tape "argos diff --branch master ./my-screenshots", I can see in my browser a local interface presenting diff.

Motivation

Running the CLI locally helps getting faster feedback and avoid using our server ressources.

Detail

  1. A call to the "get buckets API" is done to get master bucket informations.
  2. A check is done using id to see if screenshots have to be downloaded or not (already in local cache).
  3. A call to the "download buckets API" is done to download the content of the bucket.
  4. A server is started to be able to see the result.
  5. A background job is started to diff screenshots.

Dependents: #36 #37

Build number per repository

ETQU, I have a build number per repository and not a shared one for the platform.

Motivation

It's simpler for users.

Detail

We are going to need a new column in the build table.

API: create bucket

  • Method: POST
  • Endpoint: /buckets?token
  • Accept: multipart/data
  • Request body:
name
commit
branch
screenshots[]
  • Response body:
{
  id
  name
  commit
  branch
  jobStatus
}

Public website: dashboard

As a user, after logged on, I'm redirected to /.
I can see a list of the repositories I have access to and that are enabled for Argos.

Motivation

Gives users the possibilities to navigate to a repository.

Details

We need to request GitHub to get repositories the user have access too.
Then, we need to look into the repositories table.
We expose a GraphQL entry point.

query {
  repositories {
    name
    token
    enabled
  }
}

Right now, we have that ...

capture d ecran 2017-01-29 a 16 30 19

Diff UI: validate changes

As a user, I have access to a validation button that is going to accept the changes.

Motivation

So we can keep track of what was accepted and what wasn't.

Details

  • A graphQL mutation API will be exposed.
  • We only one button

Public website: GitHub connect

As a user, I can connect using a button with GitHub logo.

Motivation

We need an authentification method and we want to integrate to GitHub first.

Detail

When I am a new user, an account with my information is created and I am logged in for one month.
When I am not a new user, my account is updated and I am logged for one month.
If I am not logged, I see a login button in the header, if I am logged, I see a logout button.
When I click on the logout button, I am logged out.

screen shot 2017-01-03 at 22 44 07

screen shot 2017-01-03 at 22 44 23

Public website: profile

As a user, I can see my profile and the repositories I own.

Motivation

Once we can display the repositories I own, we can propose user to enable the integration with Argos.

Details

Create a page /profile/:profileId that display profile information:

  • Avatar from GitHub
  • Number of repositories

Model: https://travis-ci.org/profile

screen shot 2017-01-16 at 20 39 03

CLI command: whoami

When I tape "argos whoami", I can see information about the current project.

Motication

Help users understanding what's going one.

Detail

Technically, a ".argosrc.json" containing an entry "token" is read and the API "http://api.argos-ci.com/whoami" is called using the token.

Retry at most 3 times a screenshotDiffs task then fail

Stop retrying the jobs after 3 fails. If we fail more than 3 times, we should flag an error.

Description

Following our postmortem, we shouldn't retry the screenshotDiffs job indefinitely.
We made 800k screenshots in a single day and had many errors:
capture d ecran 2017-02-21 a 13 24 28

Run the seed in the CI suite

As a developper, I can always use a seed to start working on the project.

Motivation

Save time, shorter feedback loop.

Detail

Run the seed in the CI to prevent regression.

Notify PRs on github

  • When the build is in progress
  • When the build is finished
  • When a user use the toggle validation button in the interface.

API: get buckets

Motivation

Used internally by the CLI.

Detail

  • Method: GET
  • Endpoint: /buckets?token&branch
  • Response body:
[
  {
    id
    name
    commit
    branch
    jobStatus
  }
]

Public website: history view of builds

As a user, I can the history of the builds for a given repository.

Motivation

Helps making sure things are working as expected.

Details

We gonna expose a graphQL api.

CLI command: upload

When I tape "argos upload --token xx", screenshots are uploaded and a build is created.

Motication

Be able to run a build from a CI service.

Detail

We call POST https://api.argos-ci.com/builds with all screenshots.

Public website: organization list

As a user I can see the organization I'm in. I can navigate to them.

Motivation

The same as #43.

Details

One the "/profile/:profileId" page, list organizations and some information:

  • Image from GitHub
  • Number of repositories

At the bottom add a link to change settings.

Model: https://travis-ci.org/profile

screen shot 2017-01-16 at 20 41 35

Improve repositories list

As a user, I can see an ordered list of repositories.

Motivation

Repositories wheren't created equals. Display first the one that have the newest build sounds like a good choice.

Detail

screen shot 2017-03-08 at 13 30 49

API: download bucket

Motivation

Allow running the CLI tool locally.

Detail

  • Method: GET
  • Endpoint: /buckets/id/download?token
  • Response body: zip of screenshots argos-bucket-${branch}-${id}.zip

Visual status feedback

As a user, I can quickly understand if a build introduce potential regressions or not.

Motivation

Travis is doing it very well. We could use red when a build is marked at wrong, orange when we don't know, green when it's good and grey when it's in progress/pending.

Detail

Diff UI: review list

ETQU, I can see a list of screenshot diffs for a single build.

Motivation

That's the whole point of this project.

Detail

The interface could be using a Grid list. Something close to Google Photo should do 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.