c53709eda8
Remove script echo and correct redirect. |
||
---|---|---|
.circleci | ||
bin | ||
docs | ||
src | ||
.babelrc | ||
.eslintignore | ||
.eslintrc.json | ||
.gitignore | ||
.stylelintrc.json | ||
LICENSE | ||
Pipfile | ||
Pipfile.lock | ||
README.md | ||
package-lock.json | ||
package.json | ||
web-ext-config.js | ||
webpack.config.js | ||
webpack.config.test.js |
README.md
Commerce WebExtension
This repo contains the WebExtension for the Commerce project.
Developer Setup
Prerequisites:
- A recent version of Node.js and NPM
-
Clone the repository:
git clone https://github.com/mozilla/webext-commerce.git cd webext-commerce
-
Install dependencies:
npm install
-
Build the extension:
npm run build
-
Run the built extension in a test browser:
npm start
Running Tests
Automated tests are run in a Firefox browser instance using Marionette. We use the Python client for Marionette since there is no up-to-date JavaScript client.
To set up your environment for running the tests, you must have:
- A Firefox binary. On MacOS, this can be found within the
.app
folder atFirefox.app/Contents/MacOS/firefox
. - Python 2.7
- Pipenv
With these installed, you can set up the test suite:
-
Install Python dependencies:
pipenv install
-
Save the path to your Firefox binary with
npm
:npm config set webext-commerce:firefox_bin <PATH_TO_FIREFOX_BINARY>
After this, you can run pipenv run test
to run the automated test suite.
Scripts
Command | Description |
---|---|
npm start |
Launch Firefox with the extension temporarily installed |
npm run lint |
Run linting checks |
npm run build |
Compile source files with Webpack |
npm run watch |
Watch for changes and rebuild |
npm run package |
Package the extension into an XPI file |
pipenv run test |
Run test suite (See "Running Tests" for setup) |
Code Organization
src/background
contains the background scripts that trigger UI elements (such as the page action) and periodically check for price updates.src/browser_action
contains the toolbar popup for managing the list of currently-tracked products and tracking new products.src/extraction
contains the content scripts that extract product information from product web pages.src/state
contains the Redux-based code for managing global extension state.src/tests
contains the automated test suite.
Data Storage
Global state for the add-on is managed via Redux. Any time the data is changed, it is persisted to the add-on local storage.
Reducers, action creators, etc. are organized into ducks inside the src/state
directory.
License
The Commerce WebExtension is licensed under the MPL v2.0. See LICENSE
for details.