| OLD | NEW | 
|    1 Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox |    1 Adblock Plus for Chrome, Opera, Microsoft Edge and Firefox | 
|    2 ========================================================== |    2 ========================================================== | 
|    3  |    3  | 
|    4 This repository contains the platform-specific Adblock Plus source code for |    4 This repository contains the platform-specific Adblock Plus source code for | 
|    5 Chrome, Opera, Microsoft Edge and Firefox. It can be used to build |    5 Chrome, Opera, Microsoft Edge and Firefox. It can be used to build | 
|    6 Adblock Plus for these platforms, generic Adblock Plus code will be extracted |    6 Adblock Plus for these platforms, generic Adblock Plus code will be extracted | 
|    7 from other repositories automatically (see _dependencies_ file). |    7 from other repositories automatically (see _dependencies_ file). | 
|    8  |    8  | 
|    9 Note that the Firefox extension built from this repository is the new |    9 Note that the Firefox extension built from this repository is the new | 
|   10 [WebExtension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions). |   10 [WebExtension](https://developer.mozilla.org/en-US/Add-ons/WebExtensions). | 
|   11 The source code of the legacy Adblock Plus extension |   11 The source code of the legacy Adblock Plus extension | 
|   12 can be found [here](https://hg.adblockplus.org/adblockplus). |   12 can be found [here](https://hg.adblockplus.org/adblockplus). | 
|   13  |   13  | 
|   14 Building |   14 Building | 
|   15 --------- |   15 --------- | 
|   16  |   16  | 
|   17 ### Requirements |   17 ### Requirements | 
|   18  |   18  | 
|   19 - [Mercurial](https://www.mercurial-scm.org/) or [Git](https://git-scm.com/) (wh
     ichever you used to clone this repository) |   19 - [Mercurial](https://www.mercurial-scm.org/) or [Git](https://git-scm.com/) (wh
     ichever you used to clone this repository) | 
|   20 - [Python 2.7](https://www.python.org) |   20 - [Python 2.7](https://www.python.org) | 
|   21   - [The Jinja2 module](http://jinja.pocoo.org/docs) (>= 2.8) |   21   - [The Jinja2 module](http://jinja.pocoo.org/docs) (>= 2.8) | 
|   22   - For signed builds: [PyCrypto module](https://www.dlitz.net/software/pycrypto
     /) |   22   - For signed builds: [PyCrypto module](https://www.dlitz.net/software/pycrypto
     /) | 
|   23 - [Node.js](https://nodejs.org/) (>= 7) |   23 - [Node.js](https://nodejs.org/) (>= 7) | 
|   24  |   24  | 
 |   25 ### Building on Windows | 
 |   26  | 
 |   27 On Windows, you need a [Linux environment running on WSL](https://docs.microsoft
     .com/windows/wsl/install-win10). | 
 |   28 Then install the above requirements and run the commands below from within Bash. | 
 |   29  | 
|   25 ### Building the extension |   30 ### Building the extension | 
|   26  |   31  | 
|   27 Run one of the following commands in the project directory, depending on your |   32 Run one of the following commands in the project directory, depending on your | 
|   28 target platform: |   33 target platform: | 
|   29  |   34  | 
|   30     ./build.py build -t chrome -k adblockpluschrome.pem |   35     ./build.py build -t chrome -k adblockpluschrome.pem | 
|   31     ./build.py build -t edge |   36     ./build.py build -t edge | 
|   32     ./build.py build -t gecko |   37     ./build.py build -t gecko | 
|   33  |   38  | 
|   34 This will create a build with a name in the form |   39 This will create a build with a name in the form | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   69  |   74  | 
|   70 The build script calls the ensure_dependencies script automatically to manage |   75 The build script calls the ensure_dependencies script automatically to manage | 
|   71 the dependencies (see _dependencies_ file). Dependencies with local |   76 the dependencies (see _dependencies_ file). Dependencies with local | 
|   72 modifications won't be updated. Otherwise during development specifying a |   77 modifications won't be updated. Otherwise during development specifying a | 
|   73 feature-branch's name for a dependency's revision is sometimes useful. |   78 feature-branch's name for a dependency's revision is sometimes useful. | 
|   74 Alternatively dependency management can be disabled completely by setting the |   79 Alternatively dependency management can be disabled completely by setting the | 
|   75 _SKIP_DEPENDENCY_UPDATES_ environment variable, for example: |   80 _SKIP_DEPENDENCY_UPDATES_ environment variable, for example: | 
|   76  |   81  | 
|   77     SKIP_DEPENDENCY_UPDATES=true ./build.py devenv -t chrome |   82     SKIP_DEPENDENCY_UPDATES=true ./build.py devenv -t chrome | 
|   78  |   83  | 
|   79 Running the unit tests |   84 Running tests | 
|   80 ---------------------- |   85 ------------- | 
 |   86  | 
 |   87 ### Unit tests | 
|   81  |   88  | 
|   82 To verify your changes you can use the unit test suite located in the _qunit_ |   89 To verify your changes you can use the unit test suite located in the _qunit_ | 
|   83 directory of the repository. In order to run the unit tests go to the |   90 directory of the repository. In order to run the unit tests go to the | 
|   84 extension's Options page, open the JavaScript Console and type in: |   91 extension's Options page, open the JavaScript Console and type in: | 
|   85  |   92  | 
|   86     location.href = "qunit/index.html"; |   93     location.href = "qunit/index.html"; | 
|   87  |   94  | 
|   88 The unit tests will run automatically once the page loads. |   95 The unit tests will run automatically once the page loads. | 
|   89 You can also run these tests with a headless Firefox or Chromium process. |   96  | 
|   90 Install the dependencies first: |   97 ### External test runner | 
 |   98  | 
 |   99 There is also an external test runner that can be invoked from the | 
 |  100 command line in order to run the unit tests along some integration | 
 |  101 tests on different browsers, and automatically runs the linter as well. | 
 |  102  | 
 |  103 On Windows, in order to use the test runner, in addition to setting up a Linux | 
 |  104 environment as outlined above, you need to have Node.js installed in your native | 
 |  105 Windows environment. Then run the commands below from within PowerShell or | 
 |  106 cmd.exe (unlike when building the extension which needs to be done from Bash). | 
 |  107  | 
 |  108 Make sure the required packages are installed and up-to-date: | 
|   91  |  109  | 
|   92     npm install |  110     npm install | 
|   93  |  111  | 
|   94 Start the testing process for all browsers: |  112 Start the testing process for all browsers: | 
|   95  |  113  | 
|   96     npm test |  114     npm test | 
|   97  |  115  | 
|   98 Start the testing process in one browser only: |  116 Start the testing process in one browser only: | 
|   99  |  117  | 
|  100     npm test -- -g <gecko/chrome> |  118     npm test -- -g <gecko/chrome> | 
|  101  |  119  | 
|  102 Linting |  120 Linting | 
|  103 ------- |  121 ------- | 
|  104  |  122  | 
|  105 You can lint the code using [ESLint](http://eslint.org). |  123 You can lint the code using [ESLint](http://eslint.org). | 
|  106  |  124  | 
|  107 You will need to setup first. This will install our configuration |  125 You will need to setup first. This will install our configuration | 
|  108 [eslint-config-eyeo](https://hg.adblockplus.org/codingtools/file/tip/eslint-conf
     ig-eyeo) |  126 [eslint-config-eyeo](https://hg.adblockplus.org/codingtools/file/tip/eslint-conf
     ig-eyeo) | 
|  109 and everything needed after you run: |  127 and everything needed after you run: | 
|  110  |  128  | 
|  111     npm install |  129     npm install | 
|  112  |  130  | 
|  113 Then you can run to lint the code: |  131 Then you can run to lint the code: | 
|  114  |  132  | 
|  115     npm run lint |  133     npm run lint | 
| OLD | NEW |