views:

316

answers:

2

Is there a good way to do this? I'm writing an extension that interacts with a website as a content script and saves data using localstorage. Are there any tools, frameworks, etc. that I can use to test this behavior? I realize there are some generic tools for testing javascript, but are those sufficiently power to test an extension? Unit testing is most important, but I'm also interested in other types of testing (such as integration testing).

+6  A: 

Yes, the existing frameworks are pretty useful..

In the recent past, I have placed all my tests on a "test" page that was embedded in to the application but not reachable unless physically typed.

For instance, I would have all the tests in a page accessible under chrome-extension://asdasdasdasdad/unittests.html

The tests would have access to localStorage etc. For accessing content scripts, in theory you could test that through embedded IFRAMEs in your test page, however these are more integration level testing, unit tests would require you to abstract that away from real pages so that you don't depend on them, likewise with access to localStorage.

If you want to test pages directly, you can orchestrate your extension to open new tabs (chrome.tab.create({"url" : "someurl"}). For each of the new tabs your content script should run and you can use your testing framework to check that your code has done what it should do.

As for frameworks, JsUnitTest should work fine.

Kinlan
You're right, testing real pages doesn't fall under unit testing. I should have made my question more broad. But it's still something I'd like to test, especially since the website html structure could change at any time. I've modified the question.
swampsjohn
I would test through IFrames in your unit test page still. The content scripts should still fire (if you enable the scripts to run in the iFrame)
Kinlan
A: 

Open the extensions page chrome://extensions/ and click "pack extension". Choose the directory of your extension code and it will save a .crx file to your computer. Double click this file to install and test... This process is not the same as publishing. Only you have access to this extension and can thus test it however you like.

David