项目作者: jazz-soft

项目描述 :
MIDI for headless testing
高级语言: JavaScript
项目地址: git://github.com/jazz-soft/jazz-midi-headless.git
创建时间: 2021-04-03T05:50:33Z
项目社区:https://github.com/jazz-soft/jazz-midi-headless

开源协议:

下载


jazz-midi-headless

MIDI for headless testing

npm
npm
build

Usage

npm install jazz-midi-headless --save-dev

JSDOM

  1. const JZZ = require('jzz');
  2. const JMH = require('jazz-midi-headless')(JZZ);
  3. const JSDOM = require('jsdom').JSDOM;
  4. (async () => {
  5. const dom = await JSDOM.fromFile('test.html', {
  6. resources: 'usable',
  7. runScripts: 'dangerously',
  8. beforeParse: window => { JMH.enable(window); }
  9. });
  10. // ...
  11. })();

Puppeteer

  1. const JZZ = require('jzz');
  2. const JMH = require('jazz-midi-headless')(JZZ);
  3. const puppeteer = require('puppeteer');
  4. (async () => {
  5. const browser = await puppeteer.launch();
  6. const page = await browser.newPage();
  7. await JMH.enable(page);
  8. await page.goto('test.html');
  9. // ...
  10. })();

Playwright

  1. const JZZ = require('jzz');
  2. const JMH = require('jazz-midi-headless')(JZZ);
  3. const playwright = require('playwright');
  4. (async () => {
  5. for (const browserType of ['chromium', 'firefox', 'webkit']) {
  6. const browser = await playwright[browserType].launch();
  7. const context = await browser.newContext();
  8. const page = await context.newPage();
  9. await JMH.enable(page);
  10. await page.goto('test.html');
  11. // ...
  12. }
  13. })();

Virtual ports

Normally, jazz-midi-headless sees all regular MIDI ports available on your system
via the JZZ and jazz-midi.
You can create virtual MIDI ports and (optionally) hide the regular ones.

Using JZZ virtual ports:

  1. const JZZ = require('jzz');
  2. const JMH = require('jazz-midi-headless')(JZZ);
  3. const virtual_midi_out = new JZZ.Widget();
  4. JZZ.addMidiOut('VIRTUAL MIDI-Out', virtual_midi_out);
  5. virtual_midi_out.connect(function(msg) { console.log('MIDI received: ' + msg); });
  6. const virtual_midi_in = new JZZ.Widget();
  7. JZZ.addMidiIn('VIRTUAL MIDI-In', virtual_midi_in);
  8. JZZ({ engine: 'none' });
  9. // ...
  10. virtual_midi_in.noteOn(0, 'C#5', 127);
  11. // ...

Using web-midi-test virtual ports:

  1. const JZZ = require('jzz');
  2. const JMH = require('jazz-midi-headless')(JZZ);
  3. const WMT = require('web-midi-test');
  4. const virtual_midi_out = new WMT.MidiDst('VIRTUAL MIDI-Out');
  5. virtual_midi_out.connect();
  6. virtual_midi_out.receive = function(msg) { console.log('MIDI received:', msg); };
  7. const virtual_midi_in = new WMT.MidiSrc('VIRTUAL MIDI-In');
  8. virtual_midi_in.connect();
  9. global.navigator = WMT;
  10. JZZ({ engine: 'webmidi' });
  11. // ...
  12. virtual_midi_in.emit([0x90, 0x61, 0x7f]);
  13. // ...

Please check the test directory for more examples.