2e8364fbc6 | ||
---|---|---|
locale | ||
node_modules | ||
public | ||
styleguide | ||
tasks | ||
tests | ||
.csslintrc | ||
.eslintrc | ||
.gitignore | ||
.travis.yml | ||
Dockerfile | ||
Gruntfile.js | ||
LICENSE | ||
README.md | ||
karma.conf.js | ||
karma.conf.sauce.js | ||
karma.shared.js | ||
package.json | ||
webpack.config.js |
README.md
Note Sauce Labs tests are only run on PRs from the main repo or commits to master.
Payments UI
This project comprises all styles, behaviour and interfaces for mozilla/payments.
Developers
Email Styles
To get the right paths for the email CSS and rebuild files as they change run:
DEV=1 grunt start-email
Dependency installation and updates
Install grunt-cli
globally with npm install -g grunt-cli
Then run npm install
to install the local deps needed for development.
npm deps only
We're aiming to only use npm packaged deps rather than bower. This is to be able to track dep versions in one place.
Libraries + external deps
Normally built artifacts aren't committed. However, to manage dep changes more tightly, production libs (JS, CSS + fonts) are committed to the tree.
JS libs are committed from node_modules
as webpack knows how to find deps in
node_modules
.
Whilst this creates noise it does help ensure deps in the browser are identical and can't get mangled by a broken deps installation.
Watching for file changes in development.
We're using webpack to build a JS bundle.
Under docker
If you're using payments-env
to run the complete payments system then you'll want to use
grunt start
on your host to watch for file changes.
In other words, start docker to run all the things but keep a shell open
on your host just to compile static assets for the docker VM to serve.
Standalone
If you're running the UI standalone on your host then grunt serve
runs the webpack dev-server.
JavaScript Linting.
We're using eslint for JavaScript linting. Most editors will have instructions for
enabling eslint (see below for how to configure vim + syntastic). Alternatively
just run the grunt eslint
command which is self-contained.
Eslint Vim settings (Syntastic)
You'll need the packages listed below installed globally:
npm install -g eslint babel-eslint eslint-plugin-react
Using syntastic, the following snippet turns on eslint selectively for projects with a .eslintrc.
autocmd FileType javascript let b:syntastic_checkers = findfile('.eslintrc', '.;') != '' ? ['eslint'] : ['jshint']
Tests
To run the tests locally run: grunt test
. This will run the unit tests
against Firefox.
Cross-browser testing
The tests are run only on Firefox when a PR is submitted. When that code is landed on master, Travis will run the tests on Sauce Labs.
Running Sauce Labs on a PR [Team Only]
If you're a member of the payments team and you want to get Sauce Labs coverage
for a PR - push the branch to the main mozilla/payments-ui
repo and make a PR
from that.
Running the tests on SauceLabs locally
First Sign-up for a Sauce Labs 'Open Sauce' account to get your keys.
Then you'll need to export the SauceLabs username and access key as env vars:
export SAUCE_USERNAME=<YOUR_OPEN_SAUCE_USERNAME>
export SAUCE_ACCESS_KEY=<YOUR_ACCESS_KEY>
Then you should find you can run: grunt karma:sauce
and run all the tests on SauceLabs.
Styleguide
The styleguide is based on the styles and templates that live in the tree.
It can be build statically with the grunt build-styleguide
command.
The styleguide is published here.
Updating the styleguide
Run grunt publish-styleguide
Running the styleguide locally
Run grunt styleguide
(defaults to running on localhost:4001).
Localization (l10n)
We're using grunt-i18n-abide to run the extraction commands.
Because we're using React we need to operate on the compiled JS file. This also means we aren't running extraction on un-used code.
To run an extraction do the following:
npm install
grunt webpack abideExtract