Hugh McCamphill Yes, I see that :) But it's still a question for me where and how do you expose jestExpect to already use in this block? I am lacking infrastructure understanding for that purpose To use jestExpect instead of the expect exposed by detox I have to import it explicitly. Also I see the issue with toMatchImage not available in the methods scope after been extended to. import { configureToMatchImageSnapshot } from 'jest-image-snapshot'; import fs from 'fs'; import path from 'path'; import kebabCase from 'lodash.kebabcase'; import jestExpect from 'expect' const toMatchImage = configureToMatchImageSnapshot({ comparisonMethod: 'ssim', failureThreshold: 0.002, failureThresholdType: 'percent' }); jestExpect.extend({ toMatchImage }); jestExpect.extend({ async toMatchImageSnapshot(screenName) { const platform = device.getPlatform(); const deviceName = device.name.split(' ').slice(1).join(''); const deviceType = JSON.parse(deviceName).type.replace(',',''); const SNAPSHOTS_DIR = `__image_snapshots__/${platform}/${deviceType}`; const { testPath, currentTestName } = this; const customSnapshotsDir = path.join(path.dirname(testPath), SNAPSHOTS_DIR); const customSnapshotIdentifier = kebabCase(`${path.basename(testPath)}-${currentTestName}-${screenName}`) const tempPath = await device.takeScreenshot(screenName); const image = fs.readFileSync(tempPath); jestExpect(image).toMatchImage({ customSnapshotIdentifier, customSnapshotsDir }); ~~~~~~~~~~~ return { pass: true } }, }); global.jestExpect = jestExpect