Best JavaScript code snippet using playwright-internal
flex.test.js
Source:flex.test.js  
1const executor = require('../../lib/flex')2const Helper = require('../../__fixtures__/unit/helper')3const { Action } = require('../../lib/actions/action')4describe('Test beforeValidate and afterValidate invocations', async () => {5  let context6  let registry = { validators: new Map(), actions: new Map() }7  let action8  let config = `9    version: 210    hydrabot:11      - when: pull_request.*12        validate:13          - do: title14            must_exclude:15              regex: wip|work in progress|do not merge16              message: 'a custom message'17          - do: label18            must_exclude:19              regex: wip|work in progress20  `21  let configWithMultiple = config + `22      - when: pull_request_review.submitted23        validate:24          - do: milestone25            no_empty:26              enabled: true27  `28  beforeEach(() => {29    context = Helper.mockContext()30    Helper.mockConfigWithContext(context, config)31    action = new Action()32    action.beforeValidate = jest.fn()33    action.afterValidate = jest.fn()34    action.supportedEvents = ['pull_request.opened', 'pull_request.edited', 'pull_request_review.submitted']35    registry.actions.set('checks', action)36  })37  test('when event is in configuration', async () => {38    context.event = 'pull_request'39    context.payload.action = 'opened'40    await executor(context, registry)41    expect(action.beforeValidate.mock.calls.length).toBe(1)42    expect(action.afterValidate.mock.calls.length).toBe(1)43  })44  test('when event is not in configuration', async () => {45    context.event = 'pull_request_review'46    context.payload.action = 'submitted'47    await executor(context, registry)48    expect(action.beforeValidate.mock.calls.length).toBe(0)49    expect(action.afterValidate.mock.calls.length).toBe(0)50  })51  test('when event is in configuration with multiple whens', async () => {52    Helper.mockConfigWithContext(context, configWithMultiple)53    context.event = 'pull_request_review'54    context.payload.action = 'submitted'55    await executor(context, registry)56    expect(action.beforeValidate.mock.calls.length).toBe(1)57    expect(action.afterValidate.mock.calls.length).toBe(1)58  })59  test('when event is NOT in configuration with multiple whens', async () => {60    Helper.mockConfigWithContext(context, configWithMultiple)61    context.event = 'pull_request_review'62    context.payload.action = 'commented'63    await executor(context, registry)64    expect(action.beforeValidate.mock.calls.length).toBe(0)65    expect(action.afterValidate.mock.calls.length).toBe(0)66  })67})68describe('#executor', () => {69  test('Bad YML', async () => {70    let context = Helper.mockContext()71    context.event = 'pull_request'72    context.payload.action = 'opened'73    Helper.mockConfigWithContext(context, `74      version: 275      hydrabot:76    when: pull_request.*77    `,78      {files: ['.github/hydrabot.yml']}79    )80    context.event = 'pull_request'81    context.payload.action = 'opened'82    context.github.checks.create = jest.fn()83    context.github.checks.update = jest.fn()84    await executor(context, { validators: new Map(), actions: new Map() })85    expect(context.github.checks.update.mock.calls.length).toBe(0)86    expect(context.github.checks.create.mock.calls.length).toBe(1)87    const theCall = context.github.checks.create.mock.calls[0][0]88    expect(theCall.status).toBe('completed')89    expect(theCall.conclusion).toBe('cancelled')90  })91  test('One When', async () => {92    let context = Helper.mockContext('title')93    Helper.mockConfigWithContext(context, `94      version: 295      hydrabot:96        - when: pull_request.*97          validate:98            - do: title99              must_include:100                regex: wip|work in progress|do not merge101                message: 'a custom message'102            - do: label103              must_include:104                regex: wip|work in progress105          pass:106            - do: checks107              status: success108              payload:109                title: Success!!110                summary: You are ready to merge111          fail:112            - do: checks113              status: success114              payload:115                title: Success!!116                summary: You are ready to merge117    `)118    let registry = { validators: new Map(), actions: new Map() }119    context.event = 'pull_request'120    context.payload.action = 'opened'121    await executor(context, registry)122    // test that the registry will register dynamicly.123    expect(registry.validators.get('title')).toBeDefined()124    expect(registry.validators.get('label')).toBeDefined()125    let title = {126      validate: jest.fn().mockReturnValue({status: 'pass'}),127      isEventSupported: jest.fn().mockReturnValue(true)128    }129    let label = {130      validate: jest.fn().mockReturnValue({status: 'pass'}),131      isEventSupported: jest.fn().mockReturnValue(true)132    }133    registry.validators.set('title', title)134    registry.validators.set('label', label)135    let checks = {136      beforeValidate: jest.fn(),137      afterValidate: jest.fn(),138      isEventSupported: jest.fn().mockReturnValue(false)139    }140    registry.actions.set('checks', checks)141    await executor(context, registry)142    expect(title.validate).toHaveBeenCalledTimes(1)143    expect(label.validate).toHaveBeenCalledTimes(1)144    expect(checks.beforeValidate).toHaveBeenCalledTimes(0)145    expect(checks.afterValidate).toHaveBeenCalledTimes(0)146  })147  test('Comma seperated events', async () => {148    let context = Helper.mockContext('title')149    Helper.mockConfigWithContext(context, `150      version: 2151      hydrabot:152        - when: pull_request.opened, issues.opened153          validate:154            - do: title155              must_include:156                regex: wip|work in progress|do not merge157            - do: issueOnly158          pass:159            - do: checks160              status: success161              payload:162                title: Success!!163                summary: You are ready to merge164          fail:165            - do: checks166              status: success167              payload:168                title: Success!!169                summary: You are ready to merge170    `)171    let registry = { validators: new Map(), actions: new Map() }172    let title = {173      validate: jest.fn(value => Promise.resolve({status: 'pass'})),174      isEventSupported: jest.fn().mockReturnValue(true)175    }176    registry.validators.set('title', title)177    let issueOnly = {178      validate: jest.fn(value => Promise.resolve({status: 'pass'})),179      isEventSupported: jest.fn(event => { return (event === 'issues.opened') })180    }181    registry.validators.set('issueOnly', issueOnly)182    let checks = {183      beforeValidate: jest.fn(),184      afterValidate: jest.fn(),185      isEventSupported: jest.fn(event => { return (event === 'pull_request.opened') })186    }187    registry.actions.set('checks', checks)188    context.event = 'pull_request'189    context.payload.action = 'opened'190    await executor(context, registry)191    expect(title.validate).toHaveBeenCalledTimes(1)192    expect(title.isEventSupported).toHaveBeenCalledTimes(1)193    expect(issueOnly.validate).toHaveBeenCalledTimes(0)194    expect(issueOnly.isEventSupported).toHaveBeenCalledTimes(1)195    expect(checks.beforeValidate).toHaveBeenCalledTimes(1)196    expect(checks.afterValidate).toHaveBeenCalledTimes(1)197    context.event = 'issues'198    context.payload.action = 'opened'199    await executor(context, registry)200    expect(title.validate).toHaveBeenCalledTimes(2)201    expect(title.isEventSupported).toHaveBeenCalledTimes(2)202    expect(issueOnly.validate).toHaveBeenCalledTimes(1)203    expect(issueOnly.isEventSupported).toHaveBeenCalledTimes(2)204    expect(checks.beforeValidate).toHaveBeenCalledTimes(1)205    expect(checks.afterValidate).toHaveBeenCalledTimes(1)206  })207  test('Multiple Whens', async () => {208    let context = Helper.mockContext('title')209    Helper.mockConfigWithContext(context, `210      version: 2211      hydrabot:212        - when: pull_request.opened213          validate:214            - do: title215              must_exclude:216                regex: 'wip'217          pass:218            - do: checks219              status: success220              payload:221                title: Success!!222                summary: You are ready to merge223          fail:224            - do: checks225              status: success226              payload:227                title: Success!!228                summary: You are ready to merge229        - when: issues.opened230          validate:231            - do: label232              must_exclude:233                regex: 'wip'234            - do: title235          pass:236            - do: checks237              status: success238              payload:239                title: Success!!240                summary: You are ready to merge241          fail:242            - do: checks243              status: success244              payload:245                title: Success!!246                summary: You are ready to merge247    `)248    let registry = { validators: new Map(), actions: new Map() }249    let title = {250      validate: jest.fn(value => Promise.resolve({status: 'pass'})),251      isEventSupported: jest.fn().mockReturnValue(true)252    }253    registry.validators.set('title', title)254    let label = {255      validate: jest.fn(value => Promise.resolve({status: 'pass'})),256      isEventSupported: jest.fn().mockReturnValue(true)257    }258    registry.validators.set('label', label)259    let checks = {260      beforeValidate: jest.fn(),261      afterValidate: jest.fn(),262      isEventSupported: jest.fn().mockReturnValue(true)263    }264    registry.actions.set('checks', checks)265    context.event = 'pull_request'266    context.payload.action = 'opened'267    await executor(context, registry)268    expect(title.validate).toHaveBeenCalledTimes(1)269    expect(label.validate).toHaveBeenCalledTimes(0)270    expect(checks.beforeValidate).toHaveBeenCalledTimes(1)271    expect(checks.afterValidate).toHaveBeenCalledTimes(1)272    context.event = 'issues'273    await executor(context, registry)274    expect(title.validate).toHaveBeenCalledTimes(2)275    expect(label.validate).toHaveBeenCalledTimes(1)276    expect(checks.beforeValidate).toHaveBeenCalledTimes(2)277    expect(checks.afterValidate).toHaveBeenCalledTimes(2)278  })279  test('isEventInContext is working only for correct event', async () => {280    let context = Helper.mockContext('title')281    Helper.mockConfigWithContext(context, `282      version: 2283      hydrabot:284        - when: pull_request.opened285          validate:286            - do: title287              must_exclude:288                regex: 'wip'289          pass:290            - do: checks291              status: success292              payload:293                title: Success!!294                summary: You are ready to merge295          fail:296            - do: checks297              status: success298              payload:299                title: Success!!300                summary: You are ready to merge301        - when: issues.opened302          validate:303            - do: label304              must_exclude:305                regex: 'wip'306            - do: title307          pass:308            - do: checks309              status: success310              payload:311                title: Success!!312                summary: You are ready to merge313          fail:314            - do: checks315              status: success316              payload:317                title: Success!!318                summary: You are ready to merge319    `)320    let registry = { validators: new Map(), actions: new Map() }321    let title = {322      validate: jest.fn(value => Promise.resolve({status: 'pass'})),323      isEventSupported: jest.fn().mockReturnValue(true)324    }325    registry.validators.set('title', title)326    let label = {327      validate: jest.fn(value => Promise.resolve({status: 'pass'})),328      isEventSupported: jest.fn().mockReturnValue(true)329    }330    registry.validators.set('label', label)331    let checks = {332      beforeValidate: jest.fn(),333      afterValidate: jest.fn(),334      isEventSupported: jest.fn().mockReturnValue(true)335    }336    registry.actions.set('checks', checks)337    context.event = 'pull_request_review'338    context.payload.action = 'opened'339    await executor(context, registry)340    expect(title.validate).toHaveBeenCalledTimes(0)341    expect(label.validate).toHaveBeenCalledTimes(0)342    expect(checks.beforeValidate).toHaveBeenCalledTimes(0)343    expect(checks.afterValidate).toHaveBeenCalledTimes(0)344    context.event = 'pull_request'345    await executor(context, registry)346    expect(title.validate).toHaveBeenCalledTimes(1)347    expect(label.validate).toHaveBeenCalledTimes(0)348    expect(checks.beforeValidate).toHaveBeenCalledTimes(1)349    expect(checks.afterValidate).toHaveBeenCalledTimes(1)350  })351  test('Error handling', async() => {352    let registry = { validators: new Map(), actions: new Map() }353    let errorValidator = {354      validate: jest.fn(value => Promise.reject(new Error('Uncaught error'))),355      isEventSupported: jest.fn().mockReturnValue(true)356    }357    let passAction = {358      beforeValidate: jest.fn(),359      afterValidate: jest.fn(),360      isEventSupported: jest.fn().mockReturnValue(true)361    }362    let errorAction = {363      beforeValidate: jest.fn(),364      afterValidate: jest.fn(),365      isEventSupported: jest.fn().mockReturnValue(true)366    }367    registry.validators.set('error', errorValidator)368    registry.actions.set('pass_action', passAction)369    registry.actions.set('error_action', errorAction)370    let context = Helper.mockContext('error')371    Helper.mockConfigWithContext(context, `372      version: 2373      hydrabot:374        - when: pull_request.opened375          validate:376            - do: error377          pass:378            - do: pass_action379          error:380            - do: error_action381    `)382    context.event = 'pull_request'383    context.payload.action = 'opened'384    await executor(context, registry)385    expect(errorAction.beforeValidate).toHaveBeenCalledTimes(1)386    expect(errorAction.afterValidate).toHaveBeenCalledTimes(1)387    expect(passAction.beforeValidate).toHaveBeenCalledTimes(1)388    expect(passAction.afterValidate).toHaveBeenCalledTimes(0)389  })...normalizeWheel.js
Source:normalizeWheel.js  
...12 *13 * Note that `isEventSupported` can give false positives when passed augmented host objects, e.g.:14 * 15 *     someElement.onfoo = function(){ };16 *     isEventSupported('foo', someElement); // true (even if "foo" is not supported)17 *18 * Also note that in Gecko clients (those that utilize `setAttribute` -based detection) -19 *20 *     `isEventSupported('foo', someElement)`;21 *22 * - might create `someElement.foo` property (if "foo" event is supported) which apparently can not be deleted23 * `isEventSupported` sets such property to `undefined` value, but can not fully remove it24 *25 */26var isEventSupported = (function(undef) {27  28  var TAGNAMES = {29    'select':'input','change':'input',30    'submit':'form','reset':'form',31    'error':'img','load':'img','abort':'img'32  };33  34  function isEventSupported(eventName, element) {35    element = element || document.createElement(TAGNAMES[eventName] || 'div');36    eventName = 'on' + eventName;37    38    var isSupported = (eventName in element);39    40    if (!isSupported) {41      // if it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element42      if (!element.setAttribute) {43        element = document.createElement('div');44      }45      if (element.setAttribute && element.removeAttribute) {46        element.setAttribute(eventName, '');47        isSupported = typeof element[eventName] == 'function';48        // if property was created, "remove it" (by setting value to `undefined`)49        if (typeof element[eventName] != 'undefined') {50          element[eventName] = undef;51        }52        element.removeAttribute(eventName);53      }54    }55    56    element = null;57    return isSupported;58  }59  return isEventSupported;60})();61var isEventSupportedWithCache = (function(undef) {62  63  var TAGNAMES = {64    'select':'input','change':'input',65    'submit':'form','reset':'form',66    'error':'img','load':'img','abort':'img'67  }, 68  cache = { };69  70  function isEventSupported(eventName, element) {71    var canCache = (arguments.length == 1);72    73    // only return cached result when no element is given74    if (canCache && cache[eventName]) {75      return cache[eventName];76    }77    78    element = element || document.createElement(TAGNAMES[eventName] || 'div');79    eventName = 'on' + eventName;80    81    // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those82    var isSupported = (eventName in element);83    84    if (!isSupported) {85      // if it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element86      if (!element.setAttribute) {87        element = document.createElement('div');88      }89      if (element.setAttribute && element.removeAttribute) {90        element.setAttribute(eventName, '');91        isSupported = typeof element[eventName] == 'function';92        // if property was created, "remove it" (by setting value to `undefined`)93        if (typeof element[eventName] != 'undefined') {94          element[eventName] = undef;95        }96        element.removeAttribute(eventName);97      }98    }99    100    element = null;101    return canCache ? (cache[eventName] = isSupported) : isSupported;102  }103  return isEventSupported;104})();105/**106 * Copyright (c) 2015, Facebook, Inc.107 * All rights reserved.108 *109 * This source code is licensed under the BSD-style license found in the110 * LICENSE file in the root directory of this source tree. An additional grant111 * of patent rights can be found in the PATENTS file in the same directory.112 *113 * @providesModule normalizeWheel114 * @typechecks115 */116'use strict';117//var UserAgent_DEPRECATED = require('UserAgent_DEPRECATED');118//var isEventSupported = require('isEventSupported');119// Reasonable defaults120var PIXEL_STEP  = 10;121var LINE_HEIGHT = 40;122var PAGE_HEIGHT = 800;123/**124 * Mouse wheel (and 2-finger trackpad) support on the web sucks.  It is125 * complicated, thus this doc is long and (hopefully) detailed enough to answer126 * your questions.127 *128 * If you need to react to the mouse wheel in a predictable way, this code is129 * like your bestest friend. * hugs *130 *131 * As of today, there are 4 DOM event types you can listen to:132 *133 *   'wheel'                -- Chrome(31+), FF(17+), IE(9+)134 *   'mousewheel'           -- Chrome, IE(6+), Opera, Safari135 *   'MozMousePixelScroll'  -- FF(3.5 only!) (2010-2013) -- don't bother!136 *   'DOMMouseScroll'       -- FF(0.9.7+) since 2003137 *138 * So what to do?  The is the best:139 *140 *   normalizeWheel.getEventType();141 *142 * In your event callback, use this code to get sane interpretation of the143 * deltas.  This code will return an object with properties:144 *145 *   spinX   -- normalized spin speed (use for zoom) - x plane146 *   spinY   -- " - y plane147 *   pixelX  -- normalized distance (to pixels) - x plane148 *   pixelY  -- " - y plane149 *150 * Wheel values are provided by the browser assuming you are using the wheel to151 * scroll a web page by a number of lines or pixels (or pages).  Values can vary152 * significantly on different platforms and browsers, forgetting that you can153 * scroll at different speeds.  Some devices (like trackpads) emit more events154 * at smaller increments with fine granularity, and some emit massive jumps with155 * linear speed or acceleration.156 *157 * This code does its best to normalize the deltas for you:158 *159 *   - spin is trying to normalize how far the wheel was spun (or trackpad160 *     dragged).  This is super useful for zoom support where you want to161 *     throw away the chunky scroll steps on the PC and make those equal to162 *     the slow and smooth tiny steps on the Mac. Key data: This code tries to163 *     resolve a single slow step on a wheel to 1.164 *165 *   - pixel is normalizing the desired scroll delta in pixel units.  You'll166 *     get the crazy differences between browsers, but at least it'll be in167 *     pixels!168 *169 *   - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT.  This170 *     should translate to positive value zooming IN, negative zooming OUT.171 *     This matches the newer 'wheel' event.172 *173 * Why are there spinX, spinY (or pixels)?174 *175 *   - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn176 *     with a mouse.  It results in side-scrolling in the browser by default.177 *178 *   - spinY is what you expect -- it's the classic axis of a mouse wheel.179 *180 *   - I dropped spinZ/pixelZ.  It is supported by the DOM 3 'wheel' event and181 *     probably is by browsers in conjunction with fancy 3D controllers .. but182 *     you know.183 *184 * Implementation info:185 *186 * Examples of 'wheel' event if you scroll slowly (down) by one step with an187 * average mouse:188 *189 *   OS X + Chrome  (mouse)     -    4   pixel delta  (wheelDelta -120)190 *   OS X + Safari  (mouse)     -  N/A   pixel delta  (wheelDelta  -12)191 *   OS X + Firefox (mouse)     -    0.1 line  delta  (wheelDelta  N/A)192 *   Win8 + Chrome  (mouse)     -  100   pixel delta  (wheelDelta -120)193 *   Win8 + Firefox (mouse)     -    3   line  delta  (wheelDelta -120)194 *195 * On the trackpad:196 *197 *   OS X + Chrome  (trackpad)  -    2   pixel delta  (wheelDelta   -6)198 *   OS X + Firefox (trackpad)  -    1   pixel delta  (wheelDelta  N/A)199 *200 * On other/older browsers.. it's more complicated as there can be multiple and201 * also missing delta values.202 *203 * The 'wheel' event is more standard:204 *205 * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents206 *207 * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and208 * deltaX, deltaY and deltaZ.  Some browsers provide other values to maintain209 * backward compatibility with older events.  Those other values help us210 * better normalize spin speed.  Example of what the browsers provide:211 *212 *                          | event.wheelDelta | event.detail213 *        ------------------+------------------+--------------214 *          Safari v5/OS X  |       -120       |       0215 *          Safari v5/Win7  |       -120       |       0216 *         Chrome v17/OS X  |       -120       |       0217 *         Chrome v17/Win7  |       -120       |       0218 *                IE9/Win7  |       -120       |   undefined219 *         Firefox v4/OS X  |     undefined    |       1220 *         Firefox v4/Win7  |     undefined    |       3221 *222 */223function normalizeWheel(/*object*/ event) /*object*/ {224  var sX = 0, sY = 0,       // spinX, spinY225      pX = 0, pY = 0;       // pixelX, pixelY226  // Legacy227  if ('detail'      in event) { sY = event.detail; }228  if ('wheelDelta'  in event) { sY = -event.wheelDelta / 120; }229  if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }230  if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }231  // side scrolling on FF with DOMMouseScroll232  if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {233    sX = sY;234    sY = 0;235  }236  pX = sX * PIXEL_STEP;237  pY = sY * PIXEL_STEP;238  if ('deltaY' in event) { pY = event.deltaY; }239  if ('deltaX' in event) { pX = event.deltaX; }240  if ((pX || pY) && event.deltaMode) {241    if (event.deltaMode == 1) {          // delta in LINE units242      pX *= LINE_HEIGHT;243      pY *= LINE_HEIGHT;244    } else {                             // delta in PAGE units245      pX *= PAGE_HEIGHT;246      pY *= PAGE_HEIGHT;247    }248  }249  // Fall-back if spin cannot be determined250  if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }251  if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }252  return { spinX  : sX,253           spinY  : sY,254           pixelX : pX,255           pixelY : pY };256}257/**258 * The best combination if you prefer spinX + spinY normalization.  It favors259 * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with260 * 'wheel' event, making spin speed determination impossible.261 */262normalizeWheel.getEventType = function() /*string*/ {263  return (isFirefox())264           ? 'DOMMouseScroll'265           : (isEventSupported('wheel'))266               ? 'wheel'267               : 'mousewheel';...isEventSupported.js
Source:isEventSupported.js  
...13      done();14    });15  });16  it('allows you to pass an element to test against', function() {17    expect(isEventSupported('click'), document.createElement('a')).to.be(true);18  });19  it('allows you to pass an string name for an element to test against', function() {20    expect(isEventSupported('click', 'a')).to.be(true);21  });22  it('allows you to pass something other then a DOM element or string', function() {23    expect(isEventSupported('click', document)).to.be(true);24  });25  it('returns false when no event name is provided', function() {26    expect(isEventSupported()).to.be(false);27  });28  it('returns true when the event exists', function() {29    expect(isEventSupported('click')).to.be(true);30  });31  it('returns false when the event does not exists', function() {32    expect(isEventSupported('fart')).to.be(false);33  });34  describe('fallback', function() {35    var onblur = document.documentElement.onblur;36    var called;37    before(function(done) {38      try {39        // IE 7 fails if we try to delete properties that don't exist40        delete document.documentElement.onblur;41      } catch (e) {}42      requirejs.undef('isEventSupported');43      requirejs.undef('createElement');44      define('createElement', [], function() {45        return function() {46          var elm = typeof document.createElement !== 'function' ?47            document.createElement(arguments[0]) :48            document.createElement.apply(document, arguments);49          // logic added to get simulate old firefox's behavior50          if (!called) {51            try {52              delete elm.onclick;53            } catch (e) {}54            elm.setAttribute = undefined;55            called = true;56          }57          return elm;58        };59      });60      requirejs(['isEventSupported'], function(_isEventSupported) {61        isEventSupported = _isEventSupported;62        done();63      });64    });65    it('fallsback properly with no element', function() {66      expect(isEventSupported('click')).to.be(true);67    });68    it('fallsback properly when testing with a global element', function() {69      expect(isEventSupported('click', document)).to.be(true);70    });71    after(function() {72      document.documentElement.onblur = onblur;73    });74  });75  after(function() {76    cleanup();77  });...test.js
Source:test.js  
1var isEventSupported = require('./isEventSupported');2describe('dom/isEventSupported', function () {3  it('checks if event is supported by browser', function () {4    expect(isEventSupported('click')).toBe(true);5    expect(isEventSupported('click', document.createElement('button'))).toBe(true);6    expect(isEventSupported('select')).toBe(true);7    expect(isEventSupported('select', document.createElement('input'))).toBe(true);8    expect(isEventSupported('change')).toBe(true);9    expect(isEventSupported('change', document.createElement('input'))).toBe(true);10    expect(isEventSupported('change')).toBe(true);11    expect(isEventSupported('change', document.createElement('input'))).toBe(true);12    expect(isEventSupported('submit')).toBe(true);13    expect(isEventSupported('submit', document.createElement('form'))).toBe(true);14    expect(isEventSupported('reset')).toBe(true);15    expect(isEventSupported('reset', document.createElement('form'))).toBe(true);16    expect(isEventSupported('error')).toBe(true);17    expect(isEventSupported('error', document.createElement('image'))).toBe(true);18    expect(isEventSupported('load')).toBe(true);19    expect(isEventSupported('load', document.createElement('image'))).toBe(true);20    expect(isEventSupported('abort')).toBe(true);21    expect(isEventSupported('abort', document.createElement('image'))).toBe(true);22    expect(isEventSupported('scroll')).toBe(true);23    expect(isEventSupported('scroll', window)).toBe(true);24    expect(isEventSupported('keyup')).toBe(true);25    expect(isEventSupported('keyup', document.createElement('input'))).toBe(true);26    expect(isEventSupported('something')).toBe(false);27    expect(function () {28      return isEventSupported({});29    }).toThrow(new TypeError('Expected a string for first argument'));30  });...isEventSupported.test.js
Source:isEventSupported.test.js  
1/**2 * Test the isEventSupported() function in validate.js to make sure the expected values are returned.3 *4 * @deprecated Will be removed in v4.5 */6import { isEventSupported } from "../../src/validate";7describe("isEventSupported", () => {8  // Mock console.error.9  console.error = jest.fn();10  // Declare element.11  document.body.innerHTML = "<button></button>";12  const element = document.querySelector("button");13  test("returns true when checking for 'mouseup' on a <button>", () => {14    expect(isEventSupported("mouseup", element)).toBeTrue();15  });16  test("returns false when checking for an unsupported event on a <button>", () => {17    expect(isEventSupported("unsupportedEvent", element)).toBeFalse();18  });19  test("returns false when checking for an invalid event on a <button>", () => {20    expect(isEventSupported(123, element)).toBeFalse();21  });22  test("returns false when checking for 'mouseup' on a non-HTMLElement", () => {23    expect(isEventSupported("mouseup", "button")).toBeFalse();24  });25  test("returns false when checking for an invalid event on a non-HTMLElement", () => {26    expect(isEventSupported(123, "button")).toBeFalse();27  });...validator.test.js
Source:validator.test.js  
2describe('Validator#isEventSupported', () => {3  let validator = new Validator()4  test('Returns correctly with one supported event', () => {5    validator.supportedEvents = ['issues.opened']6    expect(validator.isEventSupported('pull_request.opened')).toBe(false)7    expect(validator.isEventSupported('issues.opened')).toBe(true)8  })9  test('Returns correctly with more than one supported event', () => {10    validator.supportedEvents = ['issues.opened', 'pull_request.opened']11    expect(validator.isEventSupported('pull_request.labeled')).toBe(false)12    expect(validator.isEventSupported('issues.opened')).toBe(true)13    expect(validator.isEventSupported('pull_request.opened')).toBe(true)14  })15  test('Returns correctly with a wildcard in the event name', () => {16    validator.supportedEvents = ['issues.opened', 'pull_request.*']17    expect(validator.isEventSupported('pull_request.labeled')).toBe(true)18    expect(validator.isEventSupported('issues.milestoned')).toBe(false)19  })...action.test.js
Source:action.test.js  
2describe('Action#isEventSupported', () => {3  let action = new Action()4  test('Returns correctly with one supported event', () => {5    action.supportedEvents = ['issues.opened']6    expect(action.isEventSupported('pull_request.opened')).toBe(false)7    expect(action.isEventSupported('issues.opened')).toBe(true)8  })9  test('Returns correctly with more than one supported event', () => {10    action.supportedEvents = ['issues.opened', 'pull_request.opened']11    expect(action.isEventSupported('pull_request.labeled')).toBe(false)12    expect(action.isEventSupported('issues.opened')).toBe(true)13    expect(action.isEventSupported('pull_request.opened')).toBe(true)14  })15  test('Returns correctly with a wildcard in the event name', () => {16    action.supportedEvents = ['issues.opened', 'pull_request.*']17    expect(action.isEventSupported('pull_request.labeled')).toBe(true)18    expect(action.isEventSupported('issues.milestoned')).toBe(false)19  })...EventPluginHub-test.js
Source:EventPluginHub-test.js  
1/**2 * Copyright 2013-present, Facebook, Inc.3 * All rights reserved.4 *5 * This source code is licensed under the BSD-style license found in the6 * LICENSE file in the root directory of this source tree. An additional grant7 * of patent rights can be found in the PATENTS file in the same directory.8 *9 * @emails react-core10 */11'use strict';12jest.mock('isEventSupported');13describe('EventPluginHub', () => {14  var EventPluginHub;15  var isEventSupported;16  beforeEach(() => {17    jest.resetModuleRegistry();18    EventPluginHub = require('EventPluginHub');19    isEventSupported = require('isEventSupported');20    isEventSupported.mockReturnValueOnce(false);21  });22  it('should prevent non-function listeners', () => {23    expect(function() {24      EventPluginHub.putListener(1, 'onClick', 'not a function');25    }).toThrowError(26      'Expected onClick listener to be a function, instead got type string'27    );28  });...Using AI Code Generation
1const { isEventSupported } = require('@playwright/test/lib/utils/utils');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const isSupported = await isEventSupported(page, 'click');8  console.log(isSupported);9  await browser.close();10})();Using AI Code Generation
1const { isEventSupported } = require('@playwright/test/lib/utils/utils');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const isSupported = await isEventSupported(page, 'pointerdown');8  console.log(isSupported);9  await browser.close();10})();Using AI Code Generation
1const { isEventSupported } = require('playwright/lib/server/supplements/utils/utils');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const page = await browser.newPage();6  await page.click('input[name="q"]');7  await page.keyboard.type('playwright');8  const isSupported = await page.evaluate(isEventSupported, 'keydown');9  console.log('Is keydown event supported?', isSupported);10  await browser.close();11})();Using AI Code Generation
1const { isEventSupported } = require('playwright/lib/server/supplements/utils/supplementUtils');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  console.log(await isEventSupported(page, 'click'));8  await browser.close();9})();10What is the difference between the JavaScript method call() and apply()?11How to use the JavaScript method call()?12What is the difference between the JavaScript method bind() and call()?13How to use the JavaScript method bind()?14How to use the JavaScript method apply()?15How to use the JavaScript method call()?16What is the difference between the JavaScript method bind() and call()?17How to use the JavaScript method bind()?18How to use the JavaScript method apply()?19How to use the JavaScript method call()?20How to use the JavaScript method bind()?21How to use the JavaScript method apply()?22How to use the JavaScript method call()?23How to use the JavaScript method bind()?24How to use the JavaScript method apply()?25« How to use the JavaScript method call()?26How to use the JavaScript method bind()? »Using AI Code Generation
1const { isEventSupported } = require('@playwright/test/lib/utils/utils');2test('isEventSupported', async ({ page }) => {3  const isSupported = await page.evaluate(isEventSupported, 'click');4  console.log(isSupported);5});6@dhruv-makwana I think this is expected. The isEventSupported() function is only used to check if the event is supported in the browser. If you want to check if the event is supported on the element, you can use page.$eval() :7const isSupported = await page.$eval('body', (element) => {8  return 'click' in element;9});10console.log(isSupported);Using AI Code Generation
1import { isEventSupported } from 'playwright/lib/server/dom.js';2const eventSupported = await isEventSupported(page, 'click');3console.log(eventSupported);4const { isEventSupported } = require('playwright/lib/server/dom');5const eventSupported = await isEventSupported(page, 'click');6console.log(eventSupported);7const { isEventSupported } = require('playwright/lib/server/dom');8(async () => {9  const eventSupported = await isEventSupported(page, 'click');10  console.log(eventSupported);11})();12const { isEventSupported } = require('playwright/lib/server/dom');13(async () => {14  const eventSupported = await isEventSupported(page, 'click');15  console.log(eventSupported);16})();17const { isEventSupported } = require('playwright/lib/server/dom');18(async () => {19  const eventSupported = await isEventSupported(page, 'click');20  console.log(eventSupported);21})();22const { isEventSupported } = require('playwright/lib/server/dom');23(async () => {24  const eventSupported = await isEventSupported(page, 'click');25  console.log(eventSupported);26})();27const { isEventSupported } = require('playwright/lib/server/dom');28(async () => {29  const eventSupported = await isEventSupported(page, 'click');30  console.log(eventSupported);31})();32const { isEventSupported } = require('playwright/lib/server/dom');33(async () => {34  const eventSupported = await isEventSupported(page, 'click');35  console.log(eventSupported);36})();37const { isEventSupported } = require('playwright/lib/server/dom');38(async () => {39  const eventSupported = await isEventSupported(page, 'click');40  console.log(eventSupported);41})();42const { isEventSupported } = require('playwright/lib/server/dom');43(async () => {Using AI Code Generation
1const { isEventSupported } = require('playwright/lib/internal/utils/utils');2console.log(isEventSupported('click', document.body));3const { isEventSupported } = require('playwright/lib/internal/utils/utils');4console.log(isEventSupported('click', document.body));5const { isEventSupported } = require('playwright/lib/internal/utils/utils');6console.log(isEventSupported('click', document.body));7const { isEventSupported } = require('playwright/lib/internal/utils/utils');8console.log(isEventSupported('click', document.body));9const { isEventSupported } = require('playwright/lib/internal/utils/utils');10console.log(isEventSupported('click', document.body));11const { isEventSupported } = require('playwright/lib/internal/utils/utils');12console.log(isEventSupported('click', document.body));13const { isEventSupported } = require('playwright/lib/internal/utils/utils');14console.log(isEventSupported('click', document.body));15const { isEventSupported } = require('playwright/lib/internal/utils/utils');16console.log(isEventSupported('click', document.body));17const { isEventSupported } = require('playwright/lib/internal/utils/utils');18console.log(isEventSupported('click', document.body));19const { isEventSupported } = require('playwright/lib/internal/utils/utils');20console.log(isEventSupported('click', document.body));21const { isEventSupported } = require('playwright/lib/internal/utils/utils');22console.log(isEventSupported('click', document.body));LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
