1import usingApi from "./substrate/substrate-api";2import promisifySubstrate from "./substrate/promisify-substrate";3import { expect } from "chai";45describe('Blocks Production', () => {6 it('Node produces new blocks', async () => {7 await usingApi(async api => {8 const blocksPromise = promisifySubstrate(api, () => {9 return new Promise<number[]>((resolve, reject) => {10 const blockNumbers: number[] = [];11 const unsubscribe = api.rpc.chain.subscribeNewHeads(async head => {12 blockNumbers.push(head.number.toNumber());13 if(blockNumbers.length >= 2) {14 (await unsubscribe)();15 resolve(blockNumbers);16 }17 });18 })19 })();2021 let blocks: number[] | undefined = undefined;2223 const timeoutPromise = new Promise<void>((resolve, reject) => {24 let secondsPassed = 0;25 let incrementSeconds = () => {26 secondsPassed++;27 if(secondsPassed > 5 * 60) {28 reject('Block production test failed due to timeout.');29 return;30 }3132 if(blocks) {33 resolve();34 return;35 }3637 setTimeout(incrementSeconds, 1000);38 }3940 incrementSeconds();41 });4243 blocks = await Promise.race([blocksPromise, timeoutPromise]) as number[];4445 expect(blocks[0]).to.be.lessThan(blocks[1]);46 });47 });48});