Code Monkey home page Code Monkey logo

badge-matrix's Introduction

badge-matrix

More advanced badges for your projects using Travis or Sauce Labs.

See it in action over at the script-atomic-onload project.

Support

Did this project bring you joy? Want to support updates? Check out my GitHub Sponsors page.

Alternatively…

Buy Me A Coffee

Contents

Badges

File size for any file on GitHub or npm

Builder package.json size

Victory size

Slice your Travis build matrix by environment

TEST_LOADER=jquery

TEST_LOADER=little-loader

Browser support matrix from Sauce Labs

Browser Status

Beautiful and customizable!

  • ?labels=none

    Browser Status

  • ?logos=none

    Browser Status

  • ?logos=none&labels=longName

    Browser Status

Using something other than Sauce Labs? Just construct a URL with results from your browser tests.

  • browsers?firefox=20,26&iexplore=!8,-9,10

    Browser Status

Web Service

Deployed at: https://badges.herokuapp.com/

You may also run your own instance using this package. See the Deployment section.

Endpoints

/browsers

Render browser matrix badge based on support specified in the query parameters, for cases where your testing is done with a service other than Sauce Labs (otherwise use the /sauce endpoint), or you don’t have CI and just want to show your intended support.

Query parameters

  • android, firefox, googlechrome, iexplore, ipad, iphone, microsoftedge, opera, safari

    A comma-separated list of version numbers that were tested for the given browser, e.g. firefox=20,26.

    Prefix a version number to indicate status:

    • + or no prefix: Passed.
    • -: Failed.
    • !: Error.
  • logos, labels, versionDivider, style

    Same as the /sauce/:user endpoint below.

/sauce/:user

Render browser support matrix badge for the Sauce Labs account at :user.

Query parameters

  • build

    Build number, it should match the build string of one or more jobs. By default, try to find the most recent build. The build can be from any CI service, not just Travis.

    Sauce Labs’ API doesn’t allow filtering by build, so finding the jobs for a build can be a bit of a hassle:

    • If the requested build is not in the first 500 results returned by the API, then you should specify from and to to limit the query window to the time span of the build.
    • If no from is given, then stop fetching more jobs from the API when a different build number is encountered.

    Jobs with a null value for build are never included.

  • name

    Name filter, it should match a whitespace separated substring in the name of one or more jobs. Only jobs matching the filter will be included in the result.

  • tag

    Tag filter, it should match a string in the tags array of one or more jobs. Only jobs matching the filter will be included in the result.

  • from

    Start time (Unix epoch) of the window in which to find jobs. Passed along to the Sauce Labs API.

  • to

    End time (Unix epoch) of the window in which to find jobs. Passed along to the Sauce Labs API.

  • skip

    Number of initial jobs to skip. Passed along to the Sauce Labs API.

  • source

    Data source from which to render results, defaults to svg.

    • api: Fetch results from the Sauce Labs API. This allows you to specify any of the above query parameters for filtering jobs.
    • svg: Fetch Sauce Labs’ own browser matrix SVG widget and transform it into our slimmer, beautified version. If you aren’t using any of the options above, and just want the same results as their own widget would render, use this. If you try specifying any of the options above, the server will automatically change source to api. This is probably much faster than talking to the API, but it’s a bit more fragile since their SVG output could change.
  • logos

    How to render browser logos, defaults to inside.

    • inside or true: Show logos in the label part of the badge.
    • none or false: Don’t show logos.
  • labels

    How to render browser labels, defaults to shortName.

    • shortName or true: Short names, e.g. "Chrome", "FF", "IE".
    • name: Medium names, e.g. "Chrome", "Firefox", "Internet Explorer".
    • longName: Long names, e.g. "Google Chrome", "Mozilla Firefox", "Microsoft Internet Explorer".
    • sauceName: Browser identifiers used by Sauce Labs, e.g. "googlechrome", "firefox", "iexplore".
    • none or false: Don’t show labels.
  • versionDivider

    How to render the divider between browser version numbers, defaults to none.

    • none or false: Don’t show a divider.
    • line or true: Show a subtle beveled line between version numbers.
  • style

    Badge style, defaults to flat. Styles match shields.io.

    • flat: Round and smooth.
    • flat-square: Square and flat.

/size/:source/:path

Render a file size badge for any file on GitHub or npm.

  • :source can be github or npm.
  • :path can be any valid raw.githubusercontent.com or unpkg.com path (when :source is github or npm, respectively).

Query parameters

  • gzip

    Whether to show the gzip-compressed size, defaults to false.

    • true: Show compressed size.
    • false: Show uncompressed size.
  • label

    Custom badge label, by default it will be "size" or "size (gzip)".

  • color

    Color name or value to pass along to shields.io, defaults to brightgreen. Note that the default may change to blue in the future, as is somewhat conventional for purely informational, non-qualitative badges like this one.

  • style

    Style to pass along to shields.io.

/travis/:user/:repo

Render build status badge for the Travis project at :user/:repo, counting only build jobs that match the given env filter.

The default endpoint used to communicate with the Travis API is determined by the server’s TRAVIS_ENDPOINT environment variable. You can force the public api.travis-ci.com or api.travis-ci.org endpoints by beginning the URL with /travis.com or /travis.org, respectively.

Query parameters

  • branch

    Git branch, defaults to master.

  • env

    Environment filter, it should match a VAR=value line in the env section of your build matrix. All jobs in the build matching the filter will be aggregated into one final status, similar to how Travis determines an overall build status. If no filter is given, all jobs in the build are included (even if they are Allowed Failures).

  • label

    Text label to render on the left side of the badge, defaults to the repo name.

  • style

    Style to pass along to shields.io.

/travis/:user/:repo/sauce/:sauceUser

Render browser support matrix badge for the Travis project at :user/:repo, getting Sauce Labs results from :sauceUser (defaults to :user).

You can also use the /sauce/:user endpoint, but this way ensures that we only consider Sauce Labs jobs that match up with the latest Travis build number for the given branch, and also makes the correct jobs easier to find since Travis provides the time span of the build.

The default endpoint used to communicate with the Travis API is determined by the server’s TRAVIS_ENDPOINT environment variable. You can force the public api.travis-ci.com or api.travis-ci.org endpoints by beginning the URL with /travis.com or /travis.org, respectively.

Query parameters

  • branch

    Git branch of the Travis build, defaults to master.

  • name, tag, logos, labels, versionDivider, style

    Same as the /sauce/:user endpoint above.

Deployment

If you want to run your own instance of badge-matrix, clone this repo.

Heroku

  1. Create a Heroku app.
  2. npm run add-font will copy Verdana.ttf from wherever it is on your system.
  3. npm run deploy will build the sources and deploy to Heroku.

Anywhere else

  1. npm run build will build the sources.
  2. npm run add-font will copy Verdana.ttf from wherever it is on your system.
  3. npm start will start the server.

badge-matrix's People

Contributors

exogen avatar npmcdn-to-unpkg-bot 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

badge-matrix's Issues

Travis Browser badge

I'm running several selenium tests in different browsers directly on travis CI.
e.g. in this project: https://github.com/christian-draeger/basic-selenium-project

therefore it would be awesome to have the browser badges available for travis CI

it would be nice if one could do something like this:
http://badges.herokuapp.com/travis/christian-draeger/basic-selenium-project?env=BROWSER=firefox&env=BROWSER=iexplore

or at least setting it hisself:

http://badges.herokuapp.com/travis/christian-draeger/basic-selenium-project?env=FOO=bar&logo=firefox

and get the following result
Browser Status

wrong Travis status displayed

All jobs failed on Travis https://travis-ci.org/moneymanagerex/moneymanagerex/builds/377545717
but one badge is green:

mmex1

Badges definitions:

[ubuntu]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=ubuntu&env=OS=ubuntu
[centos]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=centos&env=OS=el
[debian]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=debian&env=OS=debian
[fedora]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=fedora&env=OS=fedora
[opensuse]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=opensuse&env=OS=opensuse
[arch]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=arch&env=OS=archlinux
[mint]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=mint&env=OS=linuxmint
[slackware]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=slackware&env=OS=slackware
[yosemite]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=yosemite&env=DIST=10.10
[el capitan]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=el%20capitan&env=DIST=10.11
[sierra]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=sierra&env=DIST=10.12
[high sierra]: http://badges.herokuapp.com/travis/moneymanagerex/moneymanagerex?label=high%20sierra&env=DIST=10.13

filtering on conjunction of environment variables

I have a travis job that sets two environment variables (e.g. a=1 and b=2) and I'd like to filter on the conjunction of both. I've tried env=a=1&env=b=2 and env=a=1+b=2. So far I get unknown job error. Any suggestions?

Different default label for builds in a Travis matrix

Right now the default label is always the repository name. This makes sense if you're not doing any filtering with the env filter.

When given an env filter, maybe the default label should be the filter? e.g. NPM_3=true, TEST_LOADER=requirejs, etc.

no logo for android badge

Selenium / Sauce lets you specify platform tests for mobile, like any/android. Badge-matrix has a logo for iPhone (well, for safari, would be better to have the apple logo or something), but not for android:

screen shot 2016-07-16 at 6 12 17 pm

Saucelabs tags filter is not working

we are evaluating the adoption of badge-matrix for integration with the https://github.com/globaleaks/GlobaLeaks project.

The feature we are looking forward is the possibility to get the saucelab badge for a specific branch.
For this reason i'm using tags like 'master', 'devel' that are the main branches.

While then retesting the following url i've seen that they are not working: https://badges.herokuapp.com/sauce/globaleaks?tag=devel

is this a know issue of the badge-matrix?

Add support for more Sauce Labs browsers

All browsers will at least show up, but to be officially supported we need to add logos and nice labels for them. The Sauce Labs API only passes through an identifier like iexplore.

Font loading doesn't work on Heroku

Despite using the same setup as shields.io, on startup we get Could not load font in FontConfig when adding Verdana.ttf to the canvas context. I'm guessing it doesn't work for shields.io either, because the generated badges are pixel-for-pixel identical. Maybe just kill the Verdana bit entirely, as it causes deployment hassles anyway.

Swagger spec

Document endpoints and parameters using Swagger.

Build matrix "multi-badge"

Similar to how the Sauce Labs browser matrix badge renders a "sub-badge" for each browser. Right now you can specify an env filter to get only a specific slice. It would be cool to implement a smart way to slice up the whole build automatically and generate a "multi-badge."

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.