Price Tracker is a Firefox extension that spots price drops on things you’re interested in.
Перейти к файлу
Bianca Danforth dbf9036fc8 Fix #156: Add extension UI probes
* 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.
2018-10-22 16:16:22 -07:00
.circleci Remove script echo and correct redirect. 2018-10-16 15:20:15 -07:00
bin Implement Redux-based storage, backend for saving products and tracking prices. 2018-08-09 14:40:02 -07:00
docs Fix #156: Add extension UI probes 2018-10-22 16:16:22 -07:00
src Fix #156: Add extension UI probes 2018-10-22 16:16:22 -07:00
.babelrc Implement Redux-based storage, backend for saving products and tracking prices. 2018-08-09 14:40:02 -07:00
.eslintignore Add webpack as a build tool. 2018-07-06 10:04:32 -07:00
.eslintrc.json #56: Detect and store price alerts, and show a notificaiton. 2018-08-29 18:02:57 -07:00
.gitignore #36: Update rules for better accuracy. 2018-08-24 14:59:17 -07:00
.stylelintrc.json Fix #99: Replace product card in empty state with button. 2018-09-21 10:39:46 -07:00
LICENSE Add basic scaffolding for a sidebar extension, README, etc. 2018-06-29 15:44:40 -07:00
Pipfile Fix #119: Sign and upload XPI to S3 on tag. 2018-10-16 14:39:57 -07:00
Pipfile.lock Fix #119: Sign and upload XPI to S3 on tag. 2018-10-16 14:39:57 -07:00
README.md Update name to Price Scout. 2018-10-22 14:36:53 -07:00
package-lock.json Fix #156: Add extension UI probes 2018-10-22 16:16:22 -07:00
package.json Fix #156: Add extension UI probes 2018-10-22 16:16:22 -07:00
web-ext-config.js Bump up price update intervals during development. 2018-09-28 14:43:56 -07:00
webpack.config.js Fix #119: Sign and upload XPI to S3 on tag. 2018-10-16 14:39:57 -07:00
webpack.config.test.js Fix #28: Add Firefox/Marionette/Tape-based test suite. 2018-07-23 18:41:11 -07:00

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
  1. Clone the repository:

    git clone https://github.com/mozilla/price-scout.git
    cd price-scout
    
  2. Install dependencies:

    npm install
    
  3. Build the extension:

    npm run build
    
  4. 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 at Firefox.app/Contents/MacOS/firefox.
  • Python 2.7
  • Pipenv

With these installed, you can set up the test suite:

  1. Install Python dependencies:

    pipenv install
    
  2. 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.