Medic Test Harness for Projects
A test harness which facilitates automated integration tests for CHT Applications.
API:
Getting Started
- Install the harness 
npm install --save cht-conf-test-harness chai. - Create the below sample test file updating the 
formNamevariable. - Run your tests via Mocha.
 
const { expect } = require('chai');
const Harness = require('cht-conf-test-harness');
const harness = new Harness({ verbose: true });
describe('Getting started tests', () => {
  before(async () => { return await harness.start(); });
  after(async () => { return await harness.stop(); });
  beforeEach(async () => { return await harness.clear(); });
  afterEach(() => { expect(harness.consoleErrors).to.be.empty; });
  const formName = 'my_form';
  it(`${formName} can be loaded`, async () => {
    await harness.loadForm(`app/${formName}`);
    expect(harness.state.pageContent).to.include(`id="${formName}"`);
  });
});
Example Tests
A unit test for a hypothetical "pnc_followup" application form:
it('unit test confirming no pnc followup', async () => {
  // Load the pnc_followup form and fill in 'no' on the first page and 'no' on the second page
  const result = await harness.fillForm('pnc_followup', ['no'], ['no']);
  // Verify that the form successfully got submitted
  expect(result.errors).to.be.empty;
  // Verify some attributes on the resulting report
  expect(result.report.fields).to.deep.include({
    patient_name: 'Patient Name',
    s_pnc_visits: {
      s_pnc_visit: 'no',
      s_pnc_planned_date_show: '',
      s_pnc_date_show: '',
    },
    next_pnc: {
      s_next_pnc: 'no',
      next_pnc_date: '',
    }
  });
});
A test which confirms a task gets triggered and then resolved:
  it('integration test confirming task appears on scheduled date of pnc followup', async () => {
    // Complete a form on January 1
    await harness.setNow('2000-01-01')
    const initialResult = await harness.fillForm('pnc_followup', ['no'], ['yes', '2000-01-07']);
    expect(initialResult.errors).to.be.empty;
    // Verify a task appears on January 7
    await harness.setNow('2000-01-07');
    const tasks = await harness.getTasks();
    expect(tasks).to.have.property('length', 1);
    // Complete the task's action
    await harness.loadAction(tasks[0]);
    const followupResult = await harness.fillForm(['no_come_back']);
    expect(followupResult.errors).to.be.empty;
    // Verify the task got resolved
    const actual = await harness.getTasks();
    expect(actual).to.be.empty;
  });
Getting Started as a Developer
npm run build- Test that it is working locally with 
npm test