dbf9036fc8
* Add `open_popup`, `open_external_page`, `add_product`, `delete_product` and `undo_delete_product` probes (See ./docs/METRICS.md for their specifications). * Update `badge_type` `extra_key` description in METRICS.md to add a new enum value of 'unknown' in the case that the badge text is unrecognized, and a badge type cannot be determined. * Update `addProductFromExtracted` action creator to return a thunk, which returns a random UUID (v4) for use as a product key in telemetry. This allows us to differentiate one product from another for a particular user. This is NOT a universal product id across all users. * Add `tabId` URL searchParam to browserAction popup URL when an extracted product is found on the current page in order to obtain the `badge_type` `extra_key` value for the `open_popup` event. |
||
---|---|---|
.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
Price Scout
Price Scout is a Firefox extension that tracks price changes to help you find the best time to buy.
Developer Setup
Prerequisites:
- A recent version of Node.js and NPM
-
Clone the repository:
git clone https://github.com/mozilla/price-scout.git cd price-scout
-
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 price-scout: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.