Skip to main content

Emulator

Flow Javascript Testing Framework exposes emulator singleton allowing you to run and stop emulator instance programmatically. There are two methods available on it.

emulator.start(options)​

Starts emulator on random available port, unless overriden in options. Returns Promise.

Arguments​

NameTypeOptionalDescription
optionsEmulatorOptions✅an object containing options for starting the emulator

EmulatorOptions​

KeyTypeOptionalDescription
loggingboolean✅whether log messages from emulator shall be added to the output (default: false)
flagsstring✅custom command-line flags to supply to the emulator (default: "")
adminPortnumber✅override the port which the emulator will run the admin server on (default: auto)
restPortnumber✅override the port which the emulator will run the REST server on (default: auto)
grpcPortnumber✅override the port which the emulator will run the GRPC server on (default: auto)
debuggerPortnumber✅override the port which the emulator will run the debug server on (default: auto)

Returns​

TypeDescription
PromisePromise, which resolves to true if emulator started successfully

Usage​


_13
import {emulator, init} from "@onflow/flow-js-testing"
_13
_13
describe("test setup", () => {
_13
// Instantiate emulator and path to Cadence files
_13
beforeEach(async () => {
_13
const basePath = path.resolve(__dirname, "../cadence")
_13
_13
await init(basePath)
_13
_13
// Start emulator instance on auto-selected available ports
_13
await emulator.start()
_13
})
_13
})

emulator.stop()​

Stops emulator instance. Returns Promise.

Arguments​

This method does not expect any arguments.

Usage​


_16
import {emulator, init} from "@onflow/flow-js-testing"
_16
_16
describe("test setup", () => {
_16
// Instantiate emulator and path to Cadence files
_16
beforeEach(async () => {
_16
const basePath = path.resolve(__dirname, "../cadence")
_16
_16
await init(basePath)
_16
await emulator.start()
_16
})
_16
_16
// Stop emulator, so it could be restarted
_16
afterEach(async () => {
_16
await emulator.stop()
_16
})
_16
})

emulator.setLogging(newState)​

Set logging flag on emulator, allowing to temporally enable/disable logging.

Arguments​

NameTypeDescription
newStatebooleanEnable/disable logging

Usage​


_26
import {emulator, init} from "@onflow/flow-js-testing"
_26
_26
describe("test setup", () => {
_26
// Instantiate emulator and path to Cadence files
_26
beforeEach(async () => {
_26
const basePath = path.resolve(__dirname, "../cadence")
_26
_26
await init(basePath)
_26
await emulator.start()
_26
})
_26
_26
// Stop emulator, so it could be restarted
_26
afterEach(async () => {
_26
await emulator.stop()
_26
})
_26
_26
test("basic test", async () => {
_26
// Turn on logging from begining
_26
emulator.setLogging(true)
_26
// some asserts and interactions
_26
_26
// Turn off logging for later calls
_26
emulator.setLogging(false)
_26
// more asserts and interactions here
_26
})
_26
})