| This directory contains tests for chrome extension activity logging. |
| |
| The tests use two chrome extensions: |
| -test : sends messages to the friend extension and listens for activity |
| logged by the friend extension. Checks the activity has been logged |
| correctly. |
| -friend: receives messages from the extension and runs a function based on |
| the contents of the message. |
| |
| |
| Adding a new test: |
| |
| In friend/reply.js: |
| (1) Add a function to call the chrome api calls you want to test. If you |
| need to use window.open please consider adding your code to |
| executeApiCallsOnTabUpdated or executeDOMChangesOnTabUpdated. Every |
| extra window.open call will slow down the tests by 3s and may cause |
| timeouts. |
| (2) Add the name of the new function to the function map (fnMap). |
| |
| IMPORTANT NOTES for adding tests: |
| - The function should clean up any changes it made (e.g. listeners |
| it added) before finishing. If they are not cleaned up then unexpected |
| behavior can happen in test cases that run after this function. |
| - Every window.open call can add 3 secs to the test run for debug builds. |
| Making lots of window.open calls will therefore cause the tests to |
| timeout. If your test needs to use window.open please consider adding |
| it to one of the following existing functions: |
| - executeApiCallsOnTabUpdated |
| - executeDOMChangesOnTabUpdated |
| |
| In friend/options.html: |
| (1) Add a button to allow the new function to be called in manual mode. |
| |
| You may need also to modify the manifest.json and other files in the |
| friend extension directory. |
| |
| In test/test.js: |
| (1) Add the test to the testcase array. |
| |
| You will need to define the function that sends a message to the |
| friend extension and define the expected activity logging. Example: |
| |
| testCases.push({ |
| func: function triggerMyFunctionCall() { |
| chrome.runtime.sendMessage(FRIEND_EXTENSION_ID, |
| 'my_function_call_id', |
| function response() { }); |
| }, |
| expected_activity: ['api.call1', 'api.call2', 'api.call3'] |
| }); |
| |
| where 'my_function_call_id' is the key you added to the fn_map in |
| reply.js. |
| |
| |
| Running a testcase in Incognito mode: |
| |
| To check logging when run in incognito mode, add the following to the |
| testcase: |
| |
| is_incognito: true |
| |
| This will automatically cause all new tabs to be opened in incognito mode and |
| check the url information has been correctly cleaned. |
| |
| |
| Configuring a testcase for a particular OS: |
| |
| If you need to disable a test for a particular OS then you can do this by |
| adding the disabled field to the test case. For example: |
| |
| disabled: {win: true, mac: true} |
| |
| If you need to configure different expected activity for a particular OS, you |
| can override the logging. E.g.: |
| |
| expected_activity_win: ['api.call1', 'api.call2', 'api.call3'] |
| expected_activity_mac: ['api.call1', 'api.call2', 'api.call3'] |
| |
| See the chrome.runtime.getPlatformInfo documentation for details of which OS |
| names to use. |
| |
| |
| Running the tests: |
| |
| > out/Debug/browser_tests --gtest_filter=ActivityLogApiTest.TriggerEvent |
| |
| |
| Running in manual mode: |
| |
| (1) Start chrome with out/Debug/chrome |
| (2) Navigate to chrome://extensions |
| (3) Install the friend and test extensions from your chrome src folder |
| (4) Click on the "options" link under the friend extension |
| (5) You should see the options page the buttons to run the functions manually |