Best JavaScript code snippet using wpt
nfc-helpers.js
Source:nfc-helpers.js  
1'use strict';2// These tests rely on the User Agent providing an implementation of3// platform nfc backends.4//5// In Chromium-based browsers this implementation is provided by a polyfill6// in order to reduce the amount of test-only code shipped to users. To enable7// these tests the browser must be run with these options:8//9//   --enable-blink-features=MojoJS,MojoJSTest10async function loadChromiumResources() {11  await loadScript('/resources/testdriver.js');12  await loadScript('/resources/testdriver-vendor.js');13  await import('/resources/chromium/nfc-mock.js');14}15async function initialize_nfc_tests() {16  if (typeof WebNFCTest === 'undefined') {17    const script = document.createElement('script');18    script.src = '/resources/test-only-api.js';19    script.async = false;20    const p = new Promise((resolve, reject) => {21      script.onload = () => { resolve(); };22      script.onerror = e => { reject(e); };23    })24    document.head.appendChild(script);25    await p;26    if (isChromiumBased) {27      await loadChromiumResources();28    }29  }30  assert_implements( WebNFCTest, 'WebNFC testing interface is unavailable.');31  let NFCTest = new WebNFCTest();32  await NFCTest.initialize();33  return NFCTest;34}35function nfc_test(func, name, properties) {36  promise_test(async t => {37    let NFCTest = await initialize_nfc_tests();38    t.add_cleanup(async () => {39      await NFCTest.reset();40    });41    await func(t, NFCTest.getMockNFC());42  }, name, properties);43}44const test_text_data = 'Test text data.';45const test_text_byte_array = new TextEncoder('utf-8').encode(test_text_data);46const test_number_data = 42;47const test_json_data = {level: 1, score: 100, label: 'Game'};48const test_url_data = 'https://w3c.github.io/web-nfc/';49const test_message_origin = 'https://127.0.0.1:8443';50const test_buffer_data = new ArrayBuffer(test_text_byte_array.length);51const test_buffer_view = new Uint8Array(test_buffer_data);52test_buffer_view.set(test_text_byte_array);53const fake_tag_serial_number = 'c0:45:00:02';54const test_record_id = '/test_path/test_id';55const NFCHWStatus = {};56// OS-level NFC setting is ON57NFCHWStatus.ENABLED = 1;58// no NFC chip59NFCHWStatus.NOT_SUPPORTED = NFCHWStatus.ENABLED + 1;60// OS-level NFC setting OFF61NFCHWStatus.DISABLED = NFCHWStatus.NOT_SUPPORTED + 1;62function encodeTextToArrayBuffer(string, encoding) {63  // Only support 'utf-8', 'utf-16', 'utf-16be', and 'utf-16le'.64  assert_true(65      encoding === 'utf-8' || encoding === 'utf-16' ||66      encoding === 'utf-16be' || encoding === 'utf-16le');67  if (encoding === 'utf-8') {68    return new TextEncoder().encode(string).buffer;69  }70  if (encoding === 'utf-16') {71    let uint16array = new Uint16Array(string.length);72    for (let i = 0; i < string.length; i++) {73      uint16array[i] = string.codePointAt(i);74    }75    return uint16array.buffer;76  }77  const littleEndian = encoding === 'utf-16le';78  const buffer = new ArrayBuffer(string.length * 2);79  const view = new DataView(buffer);80  for (let i = 0; i < string.length; i++) {81    view.setUint16(i * 2, string.codePointAt(i), littleEndian);82  }83  return buffer;84}85function createMessage(records) {86  if (records !== undefined) {87    let message = {};88    message.records = records;89    return message;90  }91}92function createRecord(recordType, data, id, mediaType, encoding, lang) {93  let record = {};94  if (recordType !== undefined)95    record.recordType = recordType;96  if (id !== undefined)97    record.id = id;98  if (mediaType !== undefined)99    record.mediaType = mediaType;100  if (encoding !== undefined)101    record.encoding = encoding;102  if (lang !== undefined)103    record.lang = lang;104  if (data !== undefined)105    record.data = data;106  return record;107}108function createTextRecord(data, encoding, lang) {109  return createRecord('text', data, test_record_id, undefined, encoding, lang);110}111function createMimeRecordFromJson(json) {112  return createRecord(113      'mime', new TextEncoder('utf-8').encode(JSON.stringify(json)),114      test_record_id, 'application/json');115}116function createMimeRecord(buffer) {117  return createRecord(118      'mime', buffer, test_record_id, 'application/octet-stream');119}120function createUnknownRecord(buffer) {121  return createRecord('unknown', buffer, test_record_id);122}123function createUrlRecord(url, isAbsUrl) {124  if (isAbsUrl) {125    return createRecord('absolute-url', url, test_record_id);126  }127  return createRecord('url', url, test_record_id);128}129// Compares NDEFMessageSource that was provided to the API130// (e.g. NDEFReader.write), and NDEFMessage that was received by the131// mock NFC service.132function assertNDEFMessagesEqual(providedMessage, receivedMessage) {133  // If simple data type is passed, e.g. String or ArrayBuffer or134  // ArrayBufferView, convert it to NDEFMessage before comparing.135  // https://w3c.github.io/web-nfc/#dom-ndefmessagesource136  let provided = providedMessage;137  if (providedMessage instanceof ArrayBuffer ||138      ArrayBuffer.isView(providedMessage))139    provided = createMessage([createRecord(140        'mime', providedMessage, undefined /* id */,141        'application/octet-stream')]);142  else if (typeof providedMessage === 'string')143    provided = createMessage([createRecord('text', providedMessage)]);144  assert_equals(provided.records.length, receivedMessage.data.length,145      'NDEFMessages must have same number of NDEFRecords');146  // Compare contents of each individual NDEFRecord147  for (let i = 0; i < provided.records.length; ++i)148    compareNDEFRecords(provided.records[i], receivedMessage.data[i]);149}150// Used to compare two NDEFMessage, one that is received from151// NDEFReader.onreading() EventHandler and another that is provided to mock NFC152// service.153function assertWebNDEFMessagesEqual(message, expectedMessage) {154  assert_equals(message.records.length, expectedMessage.records.length);155  for(let i in message.records) {156    let record = message.records[i];157    let expectedRecord = expectedMessage.records[i];158    assert_equals(record.recordType, expectedRecord.recordType);159    assert_equals(record.mediaType, expectedRecord.mediaType);160    assert_equals(record.id, expectedRecord.id);161    assert_equals(record.encoding, expectedRecord.encoding);162    assert_equals(record.lang, expectedRecord.lang);163    // Compares record data164    assert_array_equals(new Uint8Array(record.data),165          new Uint8Array(expectedRecord.data));166  }167}168function testMultiScanOptions(message, scanOptions, unmatchedScanOptions, desc) {169  nfc_test(async (t, mockNFC) => {170    const ndef1 = new NDEFReader();171    const ndef2 = new NDEFReader();172    const controller = new AbortController();173    // Reading from unmatched ndef will not be triggered174    ndef1.onreading = t.unreached_func("reading event should not be fired.");175    unmatchedScanOptions.signal = controller.signal;176    await ndef1.scan(unmatchedScanOptions);177    const ndefWatcher = new EventWatcher(t, ndef2, ["reading", "readingerror"]);178    const promise = ndefWatcher.wait_for("reading").then(event => {179      controller.abort();180      assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));181    });182    scanOptions.signal = controller.signal;183    await ndef2.scan(scanOptions);184    mockNFC.setReadingMessage(message);185    await promise;186  }, desc);187}188function testMultiMessages(message, scanOptions, unmatchedMessage, desc) {189  nfc_test(async (t, mockNFC) => {190    const ndef = new NDEFReader();191    const controller = new AbortController();192    const ndefWatcher = new EventWatcher(t, ndef, ["reading", "readingerror"]);193    const promise = ndefWatcher.wait_for("reading").then(event => {194      controller.abort();195      assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));196    });197    scanOptions.signal = controller.signal;198    await ndef.scan(scanOptions);199    // Unmatched message will not be read200    mockNFC.setReadingMessage(unmatchedMessage);201    mockNFC.setReadingMessage(message);202    await promise;203  }, desc);...Using AI Code Generation
1var ndefWatcher = new NDEFWatcher();2ndefWatcher.onreading = function() {3    console.log("NDEF message found.");4    var ndefMessage = this.ndefMessage;5    console.log(ndefMessage);6};7ndefWatcher.onerror = function() {8    console.log("Error! " + this.error.name);9};10ndefWatcher.watch();11var ndefReader = new NDEFReader();12ndefReader.onreading = function() {13    console.log("NDEF message found.");14    var ndefMessage = this.ndefMessage;15    console.log(ndefMessage);16};17ndefReader.onerror = function() {18    console.log("Error! " + this.error.name);19};20ndefReader.scan();21var ndefWriter = new NDEFWriter();22ndefWriter.onreading = function() {23    console.log("NDEF message found.");24    var ndefMessage = this.ndefMessage;25    console.log(ndefMessage);26};27ndefWriter.onerror = function() {28    console.log("Error! " + this.error.name);29};30ndefWriter.write("Hello World");31var ndefWriter = new NDEFWriter();32ndefWriter.onreading = function() {33    console.log("NDEF message found.");34    var ndefMessage = this.ndefMessage;35    console.log(ndefMessage);36};37ndefWriter.onerror = function() {38    console.log("Error! " + this.error.name);39};40ndefWriter.write("Hello World");41var ndefWriter = new NDEFWriter();42ndefWriter.onreading = function() {43    console.log("NDEF message found.");44    var ndefMessage = this.ndefMessage;45    console.log(ndefMessage);46};47ndefWriter.onerror = function() {48    console.log("Error! " + this.error.name);49};50ndefWriter.write("Hello World");51var ndefWriter = new NDEFWriter();52ndefWriter.onreading = function() {53    console.log("NDEF message found.");54    var ndefMessage = this.ndefMessage;55    console.log(ndefMessage);56};Using AI Code Generation
1var wptoolkit = require('wptoolkit');2wptoolkit.ndefWatcher(function (err, data) {3    console.log(data);4});5{6  "scripts": {7  },8  "dependencies": {9  }10}Using AI Code Generation
1var wpt = require('wpt');2var ndefWatcher = wpt.ndefWatcher;3var ndef = ndefWatcher(function(err, tag) {4  if (err) {5    console.log(err);6  } else {7    console.log(tag);8  }9});10var nfc = require('nfc');11var ndefWatcher = nfc.ndefWatcher;12var ndef = ndefWatcher(function(err, tag) {13  if (err) {14    console.log(err);15  } else {16    console.log(tag);17  }18});Using AI Code Generation
1var NDEFWatcher = require('./NDEFWatcher.js');2var ndefWatcher = new NDEFWatcher();3ndefWatcher.onfound = function (message) {4    console.log('found: ' + JSON.stringify(message));5};6ndefWatcher.onlost = function () {7    console.log('lost');8};9ndefWatcher.start();10var NDEFWriter = require('./NDEFWriter.js');11var ndefWriter = new NDEFWriter();12ndefWriter.write('Hello World!').then(function () {13    console.log('Message written');14}, function (error) {15    console.log('Write failed: ' + error);16});17var NFCReader = require('./NFCReader.js');18var nfcReader = new NFCReader();19nfcReader.onreading = function (event) {20    console.log('NDEF message read: ' + JSON.stringify(event.message));21};22nfcReader.start();23var NFCWriter = require('./NFCWriter.js');24var nfcWriter = new NFCWriter();25nfcWriter.write('Hello World!').then(function () {26    console.log('Message written');27}, function (error) {28    console.log('Write failed: ' + error);29});30var NFCAdapter = require('./NFCAdapter.js');31var nfcAdapter = new NFCAdapter();32nfcAdapter.onreading = function (event) {33    console.log('NDEF message read: ' + JSON.stringify(event.message));34};35nfcAdapter.start();36var NFCPush = require('./NFCPush.js');37var nfcPush = new NFCPush();38nfcPush.onreading = function (event) {39    console.log('NDEF message read: ' + JSON.stringify(event.message));40};41nfcPush.start();Using AI Code Generation
1var ndefWatcher = require('ndefWatcher');2var ndefWatcher = new ndefWatcher();3ndefWatcher.on('read', function() {4    console.log('NDEF read!');5});6ndefWatcher.on('write', function() {7    console.log('NDEF written!');8});9ndefWatcher.on('error', function() {10    console.log('NDEF error!');11});12ndefWatcher.on('watch', function() {13    console.log('NDEF watch!');14});15ndefWatcher.on('unwatch', function() {16    console.log('NDEF unwatch!');17});18ndefWatcher.watch();19var ndefWatcher = require('ndefWatcher');20var ndefWatcher = new ndefWatcher();21ndefWatcher.on('read', function() {22    console.log('NDEF read!');23});24ndefWatcher.on('write', function() {25    console.log('NDEF written!');26});27ndefWatcher.on('error', function() {28    console.log('NDEF error!');29});30ndefWatcher.on('watch', function() {31    console.log('NDEF watch!');32});33ndefWatcher.on('unwatch', function() {34    console.log('NDEF unwatch!');35});36ndefWatcher.watch();37var ndefWatcher = require('ndefWatcher');38var ndefWatcher = new ndefWatcher();39ndefWatcher.on('read', function() {40    console.log('NDEF read!');41});42ndefWatcher.on('write', function() {43    console.log('NDEF written!');44});45ndefWatcher.on('error', function() {46    console.log('NDEF error!');47});48ndefWatcher.on('watch', function() {49    console.log('NDEF watch!');50});51ndefWatcher.on('unwatch', function() {52    console.log('NDEF unwatch!');53});54ndefWatcher.watch();55var ndefWatcher = require('ndefWatcher');56var ndefWatcher = new ndefWatcher();57ndefWatcher.on('read', function() {58    console.log('NDEF read!');59});60ndefWatcher.on('write', function() {61    console.log('NDEF written!');62});63ndefWatcher.on('error', function() {64    console.log('NDEF error!');65});66ndefWatcher.on('watch', function() {67    console.log('NDEF watch!');68});69ndefWatcher.on('Using AI Code Generation
1var callback = function (err, data) {2};3{ tag: 'NDEF', data: 'some data' }4var callback = function (err, data) {5};6{ tag: 'NDEF', data: 'some data' }7var callback = function (err, data) {8};9{ tag: 'NDEF', data: 'some data' }10var callback = function (err, data) {11};12{ tag: 'NDEF', data: 'some data' }13var callback = function (err, data) {14};15{ tag: 'NDEF', data: 'Using AI Code Generation
1var wptools = require('wptools');2var ndefWatcher = wptools.ndefWatcher;3var ndef = require('ndef');4ndefWatcher(function(err, message) {5  if (err) {6    return console.log(err);7  }8  console.log(message.uid);9  console.log(message.uid.toString('hex'));10});Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
