123456import usingApi from "./substrate/substrate-api";7import promisifySubstrate from "./substrate/promisify-substrate";8import { expect } from "chai";910describe('Blocks Production smoke test', () => {11 it('Node produces new blocks', async () => {12 await usingApi(async api => {13 const blocksPromise = promisifySubstrate(api, () => {14 return new Promise<number[]>((resolve, reject) => {15 const blockNumbers: number[] = [];16 const unsubscribe = api.rpc.chain.subscribeNewHeads(async head => {17 blockNumbers.push(head.number.toNumber());18 if(blockNumbers.length >= 2) {19 (await unsubscribe)();20 resolve(blockNumbers);21 }22 });23 })24 })();2526 let blocks: number[] | undefined = undefined;2728 const timeoutPromise = new Promise<void>((resolve, reject) => {29 let secondsPassed = 0;30 let incrementSeconds = () => {31 secondsPassed++;32 if(secondsPassed > 5 * 60) {33 reject('Block production test failed due to timeout.');34 return;35 }3637 if(blocks) {38 resolve();39 return;40 }4142 setTimeout(incrementSeconds, 1000);43 }4445 incrementSeconds();46 });4748 blocks = await Promise.race([blocksPromise, timeoutPromise]) as number[];4950 expect(blocks[0]).to.be.lessThan(blocks[1]);51 });52 });53});