Frequently Asked Questions

Search our documentation:

Toggle Documentation Menu

Frequently Asked Questions

Ghost Inspector lets you record and manage tests that check specific functionality in your website or application. We store your tests in the cloud and run them continuously, alerting you if anything breaks.

We provide a test recorder for both Chrome and Firefox. When you’re ready to record a test, click on the extension’s toolbar icon and follow the instructions. All your actions, such as clicking elements or filling in forms, will be recorded. Your test can span multiple URLs and even include user logins (though you should read our security section first). You can also specify assertions that must be true for your test to pass. For example, you can assert that certain text must be present on the page, like a username after you log in.

After you’re done recording your actions and assertions, your test is synced to the Ghost Inspector service where it can be run manually, on a scheduled interval, or through our API. When a test is run, it’s the equivalent of a human user performing the actions in a web browser (just as you did during the recording process). Ghost Inspector can notify you with details when your test fails, or when the resulting screenshot changes by a predetermined amount.

Nope. In fact, it doesn’t even have to be your website. You can record a test on any website that can be reached in your web browser. We do encourage you to record and run tests on your own web properties though.

Nope. You can record your tests at whatever URLs you choose. You could use, for example, a staging server — as long as that URL is accessible to us. The starting URL of a test can also be edited or overridden at any time. You could record a test on your live site, then point it to a staging server, or vice versa.

Currently our service offers Google Chrome (Blink), Mozilla Firefox (Gecko) and PhantomJS (Webkit) based browser options in a Linux environment. Note that Chrome is only available with a paid plan. Our free tier defaults to Firefox.

We are planning to expand our browser ecosystem in the future. We've focused initially on generally "smoke" testing applications for bugs and regressions — meaning things that break your application in general — as opposed to cross browser testing for browser-specific bugs. As we're maturing, we're beginning to explore the latter and expect additional options to become available.

In the mean time, our system allows you to export your tests for use with Selenium, a popular browser automation tool that has plugins for various browsers and operating systems.

Unforunately neither Flash nor WebGL are currently enabled in our browsers during testing. We've opted to forego Flash support as we're unable to record or play back actions inside of a Flash object. It's unlikely that we'll add Flash support in the future. We know some folks depend on Flash and that this presents a challenge for them. We apologize for any inconvenience there.

WebGL is a technology that we're still actively exploring and may attempt to support in the future.

We have a status page showing our current IP addresses that can be used for whitelisting or exclusion from analytics. Please note that while these rarely change, they are technically subject to change at any time. We do our best to announce any upcoming changes ahead of time.

Yes, currently test runs can last no longer than 10 minutes. If your test is still running after 10 minutes, it will timeout and exit.

By default, tests will run concurrently in no particular order. Capacity can vary, but in general, you'll see something in the range of 30 - 50 tests being run concurrently. However, you can trigger as many as you'd like and we'll queue them all.

We run tests concurrently for a couple of different reasons. Keeping your test independent and focused on a single task will prevent dependency failures and make troubleshooting easier. It also means that your testing will be sped up dramatically because we can run 30+ tests at a time, instead of 1 at a time.

If you would prefer to limit concurrency (for performance reasons) or run your tests sequentially, we have an option for that. You'll find it under "Settings" > "Concurreny" in your suite. If you enable this option, the slider can be used to constrain the number of tests that are run concurrently. If you would like the suite to run sequentially, set this value to 1 and the tests will be executed one at a time in alphabetical order.

Yes, you can trigger the same test multiple times using the "Run Test" button in the application or through the API. You can also trigger tests and suite with various sets of data using a CSV file.

Yes. We provide "Cancel" buttons in the application next to your active test and suite runs which can be used to immediately cancel the execution. This is not yet available in the API. Please note that tests are counted towards your monthly test run allotment when they are triggered. A canceled test still counts as a test run in regards to account usage.

Yes, you can trigger tests from a number of geographical locations around the world. This can be set under "Settings" > "Browser Access" in your test, "Settings" > "Test Defaults" in your suite, or overridden through the API when triggering.

Yes, we have an API available to all users.

Yes, we have a number of scheduling options available for tests and suite. All plans include "Interval" schedules such as "Daily" and "Hourly". Paid plans include intervals down to "Every 1 Minute" and also advanced scheduling for triggering on specific days and times during the week.

We currently focus on functional testing, so we do not have proper features for doing load and performance testing. You can technically trigger your test a number of times at once, if you want to do a very rough stress test. However, due to the way our queueing works, the timing and throughput on the tests can vary. In other words, if you trigger 100 copies of a test, our system will not instantly trigger all 100 of them. It'll queue them and process them in the 30-50 concurrent test range (depending on capacity at the moment).

On the performance side, we do capture test duration which can serve as a rough metric for performance. However, because we are a functional testing tool, we do not prioritize the speed of the test -- we prioritize ensuring that your system is working as intended, which means that the test may slow down at certain points waiting for elements/requests/etc. That makes the duration field an imprecise measurement if you're looking for accurate performance metrics.

The short answer is that we hope to offer more load/performance features in the future, but currently Ghost Inspector is focused on functional testing and not an ideal tool for precisely testing load and performance.

Yes, we provide an API which allows you to execute a test, or suite of tests, remotely. You’d likely want to point these tests at your staging server (which you can easily do). Tests are executed asynchronously, so executing an entire suite of tests shouldn’t take longer than the longest test. The API returns a pass/fail result for the executed test(s) which you can use in your continuous integration process. We have Build & Deployment Integration docs available.

Yes, there is a Selenium export option available in the "More" menu of your tests and suites. This is available for all plans, even our free plan.

If you need to exclude traffic from your analytics system or otherwise, there are currently two ways you can possibly detect traffic from our system to your website:

  1. By IP address - each of the test runners in our system runs from a specific region with a published IP address.
  2. By user agent - our test runners will append "Ghost Inspector" to the user agent of the browser used to run your test, for example Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0 Safari/537.36 Ghost Inspector.

More Questions? We've got answers.

We're always happy to help troubleshoot or answer other questions you might have, just visit our support section to contact us.