Gemini events

Events are listed in order they are emitted.

Event Description
CLI Emitted right at start, before cli is parsed. Allows to add new commands and extend help message. Event is emitted with 1 argument parser which is the commander instance used inside gemini itself.
INIT Emitted before any job start (test, update or readTests). If handler returns a promise, then job will start only after the promise is resolved. Emitted only once no matter how many times job is performed.
BEFORE_FILE_READ Emitted before each test file is read. Event is emitted with 1 argument filePath, which is the absolute path to the file to be read.
AFTER_FILE_READ Emitted after each test file has been read. Event is emitted with 1 argument filePath which is the absolute path to the file that was read.
AFTER_TESTS_READ Emitted after all tests were read (during test, update or readTests call). Event is emitted with 1 argument data:
{
    suiteCollection // suite collection with all suites parsed from test files
}
START_RUNNER Emitted before the start of test or update command. If you return a promise from the event handler, the start of the command will be delayed until the promise resolves.
BEGIN Runner event. Emitted on runner start with 1 argument data:
{
    suiteCollection, // suite collection which will be run
    config,          // gemini config
    totalStates,     // number of states in collection
    browserIds       // all browser ids from config
}
BEGIN_SUITE Emitted before decide if should test suite in specified browser. Event is emitted with 1 argument data:
{
    suite,
    browserId
}
SKIP_STATE Emitted if browser is skipped in this state. Event is emitted with 1 argument data:
{
    suite,
    state,
    browserId
}
START_BROWSER Emitted on browser session start. Emitted with browser instance. If handler returns a promise, tests will be executed in this session only after the promise is resolved.
BEGIN_STATE Emitted before launching browser for test. Event is emitted with 1 argument data:
{
    suite,
    state,
    browserId,
    sessionId
}
UPDATE_RESULT Emitted always during update. Event is emitted with 1 argument result:
{
    refImg,    // reference image info which includes absolute path and size (width, height)
    updated,   // shows if reference image has been changed
    suite,
    state,
    browserId,
    sessionId
}
RETRY Emitted if test has failed but there is still number of retries left. Event is emitted with 1 argument result:
{
    refImg,        // reference image info which includes absolute path and size (width, height)
    currImg,       // current image info which includes absolute path and size (width, height)
    equal,         // always false for retries
    tolerance,     // specified for current test or globally in .gemini.js
    saveDiffTo,    /* function responsible for building diff and present
                      in the result only if images aren't equal */
    attempt,       // number of retry for browser in current test
    retriesLeft,   /* number of left retries > 0, when number hits 0
                      event TEST_RESULT is called instead */
    suite,
    state,
    browserId,
    sessionId
}
TEST_RESULT Emitted always after the test is completed. Event is emitted with 1 argument result:
{
    refImg,        // reference image info which includes absolute path and size (width, height)
    currImg,       // current image info which includes absolute path and size (width, height)
    equal,         // shows if images are equal
    tolerance,     // specified for current test or globally in .gemini.js
    saveDiffTo,    /* function responsible for building diff and present
                      in the result only if images aren't equal */
    suite,
    state,
    browserId,
    sessionId
}
END_STATE Emitted right after UPDATE_RESULT and TEST_RESULT with 1 argument data:
{
    suite,
    state,
    browserId,
    sessionId
}
STOP_BROWSER Emitted right before browser session end. Emitted with browser instance. If handler returns a promise, quit will be performed only after the promise is resolved.
END_SUITE Emitted right after suite is skipped or tested in specified browser. Emitted with 1 argument data:
{
    suite,     // tested suite
    browserId, // skipped or tested browser
}
ERROR Emitted with 1 argument err, which is an instance of Error and has additional fields depending on the cause of error. For example, if Reference image is missing, err will have additional fields:
{
    refImg,
    currImg,
    suite,
    state,
    browserId,
    sessionId
}
INTERRUPT Emitted on signal events SIGHUP, SIGINT or SIGTERM. The event is emitted with 1 argument data – {exitCode}, wich is
  • 129 for SIGHUP
  • 130 for SIGINT
  • 143 for SIGTERM
END Emitted when all tests are completed with 1 argument stat, which contains statistics for tests. For example:
{
    total: 6,
    updated: 0,
    passed: 2,
    failed: 1,
    skipped: 3,
    retries: 8
}
END_RUNNER Emitted after the end of the test or update command.