How to use waitForRequest method in Playwright Internal

Best JavaScript code snippet using playwright-internal

tools-buildbot-triggerable-tests.js

Source:tools-buildbot-triggerable-tests.js Github

copy

Full Screen

...31 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);32 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());33 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());34 MockRemoteAPI.reset();35 return MockRemoteAPI.waitForRequest();36 }).then(() => {37 assert.equal(BuildRequest.all().length, 4);38 assert.equal(BuildRequest.findById(700).status(), 'completed');39 assert.equal(BuildRequest.findById(701).status(), 'running');40 assert.equal(BuildRequest.findById(702).status(), 'pending');41 assert.equal(BuildRequest.findById(703).status(), 'pending');42 assert.equal(MockRemoteAPI.requests[0].method, 'GET');43 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));44 MockRemoteAPI.requests[0].resolve({});45 return MockRemoteAPI.waitForRequest();46 }).then(() => {47 assert.equal(MockRemoteAPI.requests[1].method, 'GET');48 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));49 MockRemoteAPI.requests[1].resolve({'builds': [MockData.runningBuildData(), MockData.finishedBuildData()]});50 return MockRemoteAPI.waitForRequest();51 }).then(() => {52 assert.equal(MockRemoteAPI.requests[2].method, 'POST');53 assert.equal(MockRemoteAPI.requests[2].url, '/api/v2/forceschedulers/force-some-builder-1');54 assert.deepEqual(MockRemoteAPI.requests[2].data, {'id': 702, 'jsonrpc': '2.0', 'method': 'force', 'params':55 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': 702, 'forcescheduler': 'force-some-builder-1'}});56 MockRemoteAPI.requests[2].resolve('OK');57 return MockRemoteAPI.waitForRequest();58 }).then(() => {59 assert.equal(MockRemoteAPI.requests[3].method, 'GET');60 assert.equal(MockRemoteAPI.requests[3].url, MockData.pendingBuildsUrl('some-builder-1'));61 MockRemoteAPI.requests[3].resolve(MockData.pendingBuild())62 return MockRemoteAPI.waitForRequest();63 }).then(() => {64 assert.equal(MockRemoteAPI.requests[4].method, 'GET');65 assert.equal(MockRemoteAPI.requests[4].url, MockData.recentBuildsUrl('some-builder-1', 2));66 MockRemoteAPI.requests[4].resolve({'builds': [MockData.runningBuildData(), MockData.finishedBuildData()]});67 return syncPromise;68 }).then(() => {69 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithSingleBuilder().triggerableName);70 }).then(() => {71 assert.equal(BuildRequest.all().length, 4);72 assert.equal(BuildRequest.findById(700).status(), 'completed');73 assert.equal(BuildRequest.findById(701).status(), 'running');74 assert.equal(BuildRequest.findById(702).status(), 'scheduled');75 assert.equal(BuildRequest.findById(703).status(), 'pending');76 });77 });78 it('should not schedule the next build request when there is a pending build', () => {79 const db = TestServer.database();80 let syncPromise;81 return MockData.addMockData(db, ['completed', 'running', 'pending', 'pending']).then(() => {82 return Manifest.fetch();83 }).then(() => {84 let config = MockData.mockTestSyncConfigWithSingleBuilder();85 let logger = new MockLogger;86 let slaveInfo = {name: 'sync-slave', password: 'password'};87 let triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);88 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());89 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());90 MockRemoteAPI.reset();91 return MockRemoteAPI.waitForRequest();92 }).then(() => {93 assert.equal(MockRemoteAPI.requests[0].method, 'GET');94 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));95 MockRemoteAPI.requests[0].resolve(MockData.pendingBuild());96 return MockRemoteAPI.waitForRequest();97 }).then(() => {98 assert.equal(MockRemoteAPI.requests[1].method, 'GET');99 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));100 MockRemoteAPI.requests[1].resolve({'builds' : [MockData.runningBuildData(), MockData.finishedBuildData()]});101 return MockRemoteAPI.waitForRequest();102 }).then(() => {103 assert.equal(MockRemoteAPI.requests[2].method, 'GET');104 assert.equal(MockRemoteAPI.requests[2].url, MockData.pendingBuildsUrl('some-builder-1'));105 MockRemoteAPI.requests[2].resolve(MockData.pendingBuild())106 return MockRemoteAPI.waitForRequest();107 }).then(() => {108 assert.equal(MockRemoteAPI.requests[3].method, 'GET');109 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some-builder-1', 2));110 MockRemoteAPI.requests[3].resolve({'builds' : [MockData.runningBuildData(), MockData.finishedBuildData()]});111 return syncPromise;112 }).then(() => {113 assert.equal(BuildRequest.all().length, 4);114 assert.equal(BuildRequest.findById(700).status(), 'completed');115 assert.equal(BuildRequest.findById(701).status(), 'running');116 assert.equal(BuildRequest.findById(702).status(), 'pending');117 assert.equal(BuildRequest.findById(703).status(), 'pending');118 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithSingleBuilder().triggerableName);119 }).then(() => {120 assert.equal(BuildRequest.all().length, 4);121 assert.equal(BuildRequest.findById(700).status(), 'completed');122 assert.equal(BuildRequest.findById(701).status(), 'running');123 assert.equal(BuildRequest.findById(702).status(), 'scheduled');124 assert.equal(BuildRequest.findById(703).status(), 'pending');125 });126 });127 it('should schedule the build request on a builder without a pending build if it\'s the first request in the group', () => {128 const db = TestServer.database();129 let syncPromise;130 return MockData.addMockData(db, ['pending', 'pending', 'pending', 'pending']).then(() => {131 return Manifest.fetch();132 }).then(() => {133 const config = MockData.mockTestSyncConfigWithTwoBuilders();134 const logger = new MockLogger;135 const slaveInfo = {name: 'sync-slave', password: 'password'};136 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);137 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());138 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());139 MockRemoteAPI.reset();140 return MockRemoteAPI.waitForRequest();141 }).then(() => {142 assert.equal(MockRemoteAPI.requests.length, 2);143 assert.equal(MockRemoteAPI.requests[0].method, 'GET');144 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));145 MockRemoteAPI.requests[0].resolve(MockData.pendingBuild({buildRequestId: 999}));146 assert.equal(MockRemoteAPI.requests[1].method, 'GET');147 assert.equal(MockRemoteAPI.requests[1].url, MockData.pendingBuildsUrl('some builder 2'));148 MockRemoteAPI.requests[1].resolve({});149 return MockRemoteAPI.waitForRequest();150 }).then(() => {151 assert.equal(MockRemoteAPI.requests.length, 4);152 assert.equal(MockRemoteAPI.requests[2].method, 'GET');153 assert.equal(MockRemoteAPI.requests[2].url, MockData.recentBuildsUrl('some-builder-1', 2));154 MockRemoteAPI.requests[2].resolve({});155 assert.equal(MockRemoteAPI.requests[3].method, 'GET');156 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some builder 2', 2));157 MockRemoteAPI.requests[3].resolve({});158 return MockRemoteAPI.waitForRequest();159 }).then(() => {160 assert.equal(MockRemoteAPI.requests.length, 5);161 assert.equal(MockRemoteAPI.requests[4].method, 'POST');162 assert.equal(MockRemoteAPI.requests[4].url, '/api/v2/forceschedulers/force-some-builder-2');163 assert.deepEqual(MockRemoteAPI.requests[4].data, {'id': '700', 'jsonrpc': '2.0', 'method': 'force', 'params':164 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': '700', 'forcescheduler': 'force-some-builder-2'}});165 MockRemoteAPI.requests[4].resolve('OK');166 return MockRemoteAPI.waitForRequest();167 }).then(() => {168 assert.equal(MockRemoteAPI.requests.length, 7);169 assert.equal(MockRemoteAPI.requests[5].method, 'GET');170 assert.equal(MockRemoteAPI.requests[5].url, MockData.pendingBuildsUrl('some-builder-1'));171 MockRemoteAPI.requests[5].resolve(MockData.pendingBuild({buildRequestId: 999}));172 assert.equal(MockRemoteAPI.requests[6].method, 'GET');173 assert.equal(MockRemoteAPI.requests[6].url, MockData.pendingBuildsUrl('some builder 2'));174 MockRemoteAPI.requests[6].resolve(MockData.pendingBuild({builderId: MockData.builderIDForName('some builder 2'), buildRequestId: 700, buildbotBuildRequestId: 17}));175 return MockRemoteAPI.waitForRequest();176 }).then(() => {177 assert.equal(MockRemoteAPI.requests.length, 9);178 assert.equal(MockRemoteAPI.requests[7].method, 'GET');179 assert.equal(MockRemoteAPI.requests[7].url, MockData.recentBuildsUrl('some-builder-1', 2));180 MockRemoteAPI.requests[7].resolve({});181 assert.equal(MockRemoteAPI.requests[8].method, 'GET');182 assert.equal(MockRemoteAPI.requests[8].url, MockData.recentBuildsUrl('some builder 2', 2));183 MockRemoteAPI.requests[8].resolve({});184 return syncPromise;185 }).then(() => {186 assert.equal(BuildRequest.all().length, 4);187 assert.equal(BuildRequest.findById(700).status(), 'pending');188 assert.equal(BuildRequest.findById(700).statusUrl(), null);189 assert.equal(BuildRequest.findById(701).status(), 'pending');190 assert.equal(BuildRequest.findById(701).statusUrl(), null);191 assert.equal(BuildRequest.findById(702).status(), 'pending');192 assert.equal(BuildRequest.findById(702).statusUrl(), null);193 assert.equal(BuildRequest.findById(703).status(), 'pending');194 assert.equal(BuildRequest.findById(703).statusUrl(), null);195 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);196 }).then(() => {197 assert.equal(BuildRequest.all().length, 4);198 assert.equal(BuildRequest.findById(700).status(), 'scheduled');199 assert.equal(BuildRequest.findById(700).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');200 assert.equal(BuildRequest.findById(701).status(), 'pending');201 assert.equal(BuildRequest.findById(701).statusUrl(), null);202 assert.equal(BuildRequest.findById(702).status(), 'pending');203 assert.equal(BuildRequest.findById(702).statusUrl(), null);204 assert.equal(BuildRequest.findById(703).status(), 'pending');205 assert.equal(BuildRequest.findById(703).statusUrl(), null);206 });207 });208 it('should not schedule a build request on a different builder than the one the first build request is pending', () => {209 const db = TestServer.database();210 let syncPromise;211 return MockData.addMockData(db, ['pending', 'pending', 'pending', 'pending']).then(() => {212 return Manifest.fetch();213 }).then(() => {214 let config = MockData.mockTestSyncConfigWithTwoBuilders();215 let logger = new MockLogger;216 let slaveInfo = {name: 'sync-slave', password: 'password'};217 let triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);218 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());219 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());220 MockRemoteAPI.reset();221 return MockRemoteAPI.waitForRequest();222 }).then(() => {223 assert.equal(MockRemoteAPI.requests.length, 2);224 assert.equal(MockRemoteAPI.requests[0].method, 'GET');225 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));226 MockRemoteAPI.requests[0].resolve(MockData.pendingBuild({buildRequestId: 700, buildbotBuildRequestId: 17}));227 assert.equal(MockRemoteAPI.requests[1].method, 'GET');228 assert.equal(MockRemoteAPI.requests[1].url, MockData.pendingBuildsUrl('some builder 2'));229 MockRemoteAPI.requests[1].resolve({});230 return MockRemoteAPI.waitForRequest();231 }).then(() => {232 assert.equal(MockRemoteAPI.requests.length, 4);233 assert.equal(MockRemoteAPI.requests[2].method, 'GET');234 assert.equal(MockRemoteAPI.requests[2].url, MockData.recentBuildsUrl('some-builder-1', 2));235 MockRemoteAPI.requests[2].resolve({});236 assert.equal(MockRemoteAPI.requests[3].method, 'GET');237 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some builder 2', 2));238 MockRemoteAPI.requests[3].resolve({});239 return MockRemoteAPI.waitForRequest();240 }).then(() => {241 assert.equal(MockRemoteAPI.requests.length, 6);242 assert.equal(MockRemoteAPI.requests[4].method, 'GET');243 assert.equal(MockRemoteAPI.requests[4].url, MockData.pendingBuildsUrl('some-builder-1'));244 MockRemoteAPI.requests[4].resolve(MockData.pendingBuild({buildRequestId: 700, buildbotBuildRequestId: 17}));245 assert.equal(MockRemoteAPI.requests[5].method, 'GET');246 assert.equal(MockRemoteAPI.requests[5].url, MockData.pendingBuildsUrl('some builder 2'));247 MockRemoteAPI.requests[5].resolve({});248 return MockRemoteAPI.waitForRequest();249 }).then(() => {250 assert.equal(MockRemoteAPI.requests.length, 8);251 assert.equal(MockRemoteAPI.requests[6].method, 'GET');252 assert.equal(MockRemoteAPI.requests[6].url, MockData.recentBuildsUrl('some-builder-1', 2));253 MockRemoteAPI.requests[6].resolve({});254 assert.equal(MockRemoteAPI.requests[7].method, 'GET');255 assert.equal(MockRemoteAPI.requests[7].url, MockData.recentBuildsUrl('some builder 2', 2));256 MockRemoteAPI.requests[7].resolve({});257 return syncPromise;258 }).then(() => {259 assert.equal(BuildRequest.all().length, 4);260 assert.equal(BuildRequest.findById(700).status(), 'pending');261 assert.equal(BuildRequest.findById(700).statusUrl(), null);262 assert.equal(BuildRequest.findById(701).status(), 'pending');263 assert.equal(BuildRequest.findById(701).statusUrl(), null);264 assert.equal(BuildRequest.findById(702).status(), 'pending');265 assert.equal(BuildRequest.findById(702).statusUrl(), null);266 assert.equal(BuildRequest.findById(703).status(), 'pending');267 assert.equal(BuildRequest.findById(703).statusUrl(), null);268 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);269 }).then(() => {270 assert.equal(BuildRequest.all().length, 4);271 assert.equal(BuildRequest.findById(700).status(), 'scheduled');272 assert.equal(BuildRequest.findById(700).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');273 assert.equal(BuildRequest.findById(701).status(), 'pending');274 assert.equal(BuildRequest.findById(701).statusUrl(), null);275 assert.equal(BuildRequest.findById(702).status(), 'pending');276 assert.equal(BuildRequest.findById(702).statusUrl(), null);277 assert.equal(BuildRequest.findById(703).status(), 'pending');278 assert.equal(BuildRequest.findById(703).statusUrl(), null);279 });280 });281 it('should update the status of a pending build and schedule a new build if the pending build had started running', () => {282 const db = TestServer.database();283 let syncPromise;284 return MockData.addMockData(db, ['pending', 'pending', 'pending', 'pending']).then(() => {285 return Manifest.fetch();286 }).then(() => {287 const config = MockData.mockTestSyncConfigWithTwoBuilders();288 const logger = new MockLogger;289 const slaveInfo = {name: 'sync-slave', password: 'password'};290 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);291 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());292 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());293 MockRemoteAPI.reset();294 return MockRemoteAPI.waitForRequest();295 }).then(() => {296 assert.equal(MockRemoteAPI.requests.length, 2);297 assert.equal(MockRemoteAPI.requests[0].method, 'GET');298 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));299 MockRemoteAPI.requests[0].resolve({});300 assert.equal(MockRemoteAPI.requests[1].method, 'GET');301 assert.equal(MockRemoteAPI.requests[1].url, MockData.pendingBuildsUrl('some builder 2'));302 MockRemoteAPI.requests[1].resolve({});303 return MockRemoteAPI.waitForRequest();304 }).then(() => {305 assert.equal(MockRemoteAPI.requests.length, 4);306 assert.equal(MockRemoteAPI.requests[2].method, 'GET');307 assert.equal(MockRemoteAPI.requests[2].url, MockData.recentBuildsUrl('some-builder-1', 2));308 MockRemoteAPI.requests[2].resolve({'builds' : [MockData.runningBuildData({buildRequestId: 701}), MockData.finishedBuildData({buildRequestId: 700})]});309 assert.equal(MockRemoteAPI.requests[3].method, 'GET');310 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some builder 2', 2));311 MockRemoteAPI.requests[3].resolve({});312 return MockRemoteAPI.waitForRequest();313 }).then(() => {314 assert.equal(MockRemoteAPI.requests.length, 5);315 assert.equal(MockRemoteAPI.requests[4].method, 'POST');316 assert.equal(MockRemoteAPI.requests[4].url, '/api/v2/forceschedulers/force-some-builder-1');317 assert.deepEqual(MockRemoteAPI.requests[4].data, {'id': '702', 'jsonrpc': '2.0', 'method': 'force', 'params':318 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': '702', 'forcescheduler': 'force-some-builder-1'}});319 MockRemoteAPI.requests[4].resolve('OK');320 return MockRemoteAPI.waitForRequest();321 }).then(() => {322 assert.equal(MockRemoteAPI.requests.length, 7);323 assert.equal(MockRemoteAPI.requests[5].method, 'GET');324 assert.equal(MockRemoteAPI.requests[5].url, MockData.pendingBuildsUrl('some-builder-1'));325 MockRemoteAPI.requests[5].resolve(MockData.pendingBuild({buildRequestId: 702, buildbotBuildRequestId: 17}));326 assert.equal(MockRemoteAPI.requests[6].method, 'GET');327 assert.equal(MockRemoteAPI.requests[6].url, MockData.pendingBuildsUrl('some builder 2'));328 MockRemoteAPI.requests[6].resolve({});329 return MockRemoteAPI.waitForRequest();330 }).then(() => {331 assert.equal(MockRemoteAPI.requests.length, 9);332 assert.equal(MockRemoteAPI.requests[7].method, 'GET');333 assert.equal(MockRemoteAPI.requests[7].url, MockData.recentBuildsUrl('some-builder-1', 2));334 MockRemoteAPI.requests[7].resolve({'builds' : [MockData.runningBuildData({buildRequestId: 701}), MockData.finishedBuildData({buildRequestId: 700})]});335 assert.equal(MockRemoteAPI.requests[8].method, 'GET');336 assert.equal(MockRemoteAPI.requests[8].url, MockData.recentBuildsUrl('some builder 2', 2));337 MockRemoteAPI.requests[8].resolve({});338 return syncPromise;339 }).then(() => {340 assert.equal(BuildRequest.all().length, 4);341 assert.equal(BuildRequest.findById(700).status(), 'pending');342 assert.equal(BuildRequest.findById(700).statusUrl(), null);343 assert.equal(BuildRequest.findById(701).status(), 'pending');344 assert.equal(BuildRequest.findById(701).statusUrl(), null);345 assert.equal(BuildRequest.findById(702).status(), 'pending');346 assert.equal(BuildRequest.findById(702).statusUrl(), null);347 assert.equal(BuildRequest.findById(703).status(), 'pending');348 assert.equal(BuildRequest.findById(703).statusUrl(), null);349 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);350 }).then(() => {351 assert.equal(BuildRequest.all().length, 4);352 assert.equal(BuildRequest.findById(700).status(), 'failed');353 assert.equal(BuildRequest.findById(700).statusUrl(), MockData.statusUrl('some-builder-1', 123));354 assert.equal(BuildRequest.findById(701).status(), 'running');355 assert.equal(BuildRequest.findById(701).statusUrl(), MockData.statusUrl('some-builder-1', 124));356 assert.equal(BuildRequest.findById(702).status(), 'scheduled');357 assert.equal(BuildRequest.findById(702).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');358 assert.equal(BuildRequest.findById(703).status(), 'pending');359 assert.equal(BuildRequest.findById(703).statusUrl(), null);360 });361 });362 it('should update the status of a scheduled build if the pending build had started running', () => {363 const db = TestServer.database();364 let syncPromise;365 return MockData.addMockData(db, ['scheduled', 'pending', 'pending', 'pending']).then(() => {366 return Manifest.fetch();367 }).then(() => {368 let config = MockData.mockTestSyncConfigWithSingleBuilder();369 let logger = new MockLogger;370 let slaveInfo = {name: 'sync-slave', password: 'password'};371 let triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);372 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());373 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());374 MockRemoteAPI.reset();375 return MockRemoteAPI.waitForRequest();376 }).then(() => {377 assert.equal(MockRemoteAPI.requests.length, 1);378 assert.equal(MockRemoteAPI.requests[0].method, 'GET');379 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));380 MockRemoteAPI.requests[0].resolve(MockData.pendingBuild({buildRequestId: 700, buildbotBuildRequestId: 17}));381 return MockRemoteAPI.waitForRequest();382 }).then(() => {383 assert.equal(MockRemoteAPI.requests.length, 2);384 assert.equal(MockRemoteAPI.requests[1].method, 'GET');385 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));386 MockRemoteAPI.requests[1].resolve({});387 return MockRemoteAPI.waitForRequest();388 }).then(() => {389 assert.equal(MockRemoteAPI.requests.length, 3);390 assert.equal(MockRemoteAPI.requests[2].method, 'GET');391 assert.equal(MockRemoteAPI.requests[2].url, MockData.pendingBuildsUrl('some-builder-1'));392 MockRemoteAPI.requests[2].resolve({});393 return MockRemoteAPI.waitForRequest();394 }).then(() => {395 assert.equal(MockRemoteAPI.requests.length, 4);396 assert.equal(MockRemoteAPI.requests[3].method, 'GET');397 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some-builder-1', 2));398 MockRemoteAPI.requests[3].resolve(MockData.runningBuild({buildRequestId: 700}));399 return syncPromise;400 }).then(() => {401 assert.equal(BuildRequest.all().length, 4);402 assert.equal(BuildRequest.findById(700).status(), 'scheduled');403 assert.equal(BuildRequest.findById(700).statusUrl(), null);404 assert.equal(BuildRequest.findById(701).status(), 'pending');405 assert.equal(BuildRequest.findById(701).statusUrl(), null);406 assert.equal(BuildRequest.findById(702).status(), 'pending');407 assert.equal(BuildRequest.findById(702).statusUrl(), null);408 assert.equal(BuildRequest.findById(703).status(), 'pending');409 assert.equal(BuildRequest.findById(703).statusUrl(), null);410 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);411 }).then(() => {412 assert.equal(BuildRequest.all().length, 4);413 assert.equal(BuildRequest.findById(700).status(), 'running');414 assert.equal(BuildRequest.findById(700).statusUrl(), MockData.statusUrl('some-builder-1', 124));415 assert.equal(BuildRequest.findById(701).status(), 'pending');416 assert.equal(BuildRequest.findById(701).statusUrl(), null);417 assert.equal(BuildRequest.findById(702).status(), 'pending');418 assert.equal(BuildRequest.findById(702).statusUrl(), null);419 assert.equal(BuildRequest.findById(703).status(), 'pending');420 assert.equal(BuildRequest.findById(703).statusUrl(), null);421 });422 });423 it('should schedule a build request on a builder without pending builds if the request belongs to a new test group', () => {424 const db = TestServer.database();425 let syncPromise;426 return Promise.all([427 MockData.addMockData(db, ['completed', 'pending', 'pending', 'pending']),428 MockData.addAnotherMockTestGroup(db, ['pending', 'pending', 'pending', 'pending'])429 ]).then(() => {430 return Manifest.fetch();431 }).then(() => {432 const config = MockData.mockTestSyncConfigWithTwoBuilders();433 const logger = new MockLogger;434 const slaveInfo = {name: 'sync-slave', password: 'password'};435 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);436 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());437 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());438 MockRemoteAPI.reset();439 return MockRemoteAPI.waitForRequest();440 }).then(() => {441 assert.equal(MockRemoteAPI.requests.length, 2);442 assert.equal(MockRemoteAPI.requests[0].method, 'GET');443 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));444 MockRemoteAPI.requests[0].resolve(MockData.pendingBuild({buildRequestId: 702, buildbotBuildRequestId: 17}));445 assert.equal(MockRemoteAPI.requests[1].method, 'GET');446 assert.equal(MockRemoteAPI.requests[1].url, MockData.pendingBuildsUrl('some builder 2'));447 MockRemoteAPI.requests[1].resolve({});448 return MockRemoteAPI.waitForRequest();449 }).then(() => {450 assert.equal(MockRemoteAPI.requests.length, 4);451 assert.equal(MockRemoteAPI.requests[2].method, 'GET');452 assert.equal(MockRemoteAPI.requests[2].url, MockData.recentBuildsUrl('some-builder-1', 2));453 MockRemoteAPI.requests[2].resolve({'builds' : [MockData.runningBuildData({buildRequestId: 701}), MockData.finishedBuildData({buildRequestId: 700})]});454 assert.equal(MockRemoteAPI.requests[3].method, 'GET');455 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some builder 2', 2));456 MockRemoteAPI.requests[3].resolve({});457 return MockRemoteAPI.waitForRequest();458 }).then(() => {459 assert.equal(MockRemoteAPI.requests.length, 5);460 assert.equal(MockRemoteAPI.requests[4].method, 'POST');461 assert.equal(MockRemoteAPI.requests[4].url, '/api/v2/forceschedulers/force-some-builder-2');462 assert.deepEqual(MockRemoteAPI.requests[4].data, {'id': '710', 'jsonrpc': '2.0', 'method': 'force', 'params':463 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': '710', 'forcescheduler': 'force-some-builder-2'}});464 MockRemoteAPI.requests[4].resolve('OK');465 return MockRemoteAPI.waitForRequest();466 }).then(() => {467 assert.equal(MockRemoteAPI.requests.length, 7);468 assert.equal(MockRemoteAPI.requests[5].method, 'GET');469 assert.equal(MockRemoteAPI.requests[5].url, MockData.pendingBuildsUrl('some-builder-1'));470 MockRemoteAPI.requests[5].resolve(MockData.pendingBuild({buildRequestId: 702, buildbotBuildRequestId: 17}));471 assert.equal(MockRemoteAPI.requests[6].method, 'GET');472 assert.equal(MockRemoteAPI.requests[6].url, MockData.pendingBuildsUrl('some builder 2'));473 MockRemoteAPI.requests[6].resolve(MockData.pendingBuild({builderId: MockData.builderIDForName('some builder 2'), buildRequestId: 710, buildbotBuildRequestId: 17}));474 return MockRemoteAPI.waitForRequest();475 }).then(() => {476 assert.equal(MockRemoteAPI.requests.length, 9);477 assert.equal(MockRemoteAPI.requests[7].method, 'GET');478 assert.equal(MockRemoteAPI.requests[7].url, MockData.recentBuildsUrl('some-builder-1', 2));479 MockRemoteAPI.requests[7].resolve({'builds' : [MockData.runningBuildData({buildRequestId: 701}), MockData.finishedBuildData({buildRequestId: 700})]});480 assert.equal(MockRemoteAPI.requests[8].method, 'GET');481 assert.equal(MockRemoteAPI.requests[8].url, MockData.recentBuildsUrl('some builder 2', 2));482 MockRemoteAPI.requests[8].resolve({});483 return syncPromise;484 }).then(() => {485 assert.equal(BuildRequest.all().length, 8);486 assert.equal(BuildRequest.findById(700).status(), 'completed');487 assert.equal(BuildRequest.findById(700).statusUrl(), null);488 assert.equal(BuildRequest.findById(701).status(), 'pending');489 assert.equal(BuildRequest.findById(701).statusUrl(), null);490 assert.equal(BuildRequest.findById(702).status(), 'pending');491 assert.equal(BuildRequest.findById(702).statusUrl(), null);492 assert.equal(BuildRequest.findById(703).status(), 'pending');493 assert.equal(BuildRequest.findById(703).statusUrl(), null);494 assert.equal(BuildRequest.findById(710).status(), 'pending');495 assert.equal(BuildRequest.findById(710).statusUrl(), null);496 assert.equal(BuildRequest.findById(711).status(), 'pending');497 assert.equal(BuildRequest.findById(711).statusUrl(), null);498 assert.equal(BuildRequest.findById(712).status(), 'pending');499 assert.equal(BuildRequest.findById(712).statusUrl(), null);500 assert.equal(BuildRequest.findById(713).status(), 'pending');501 assert.equal(BuildRequest.findById(713).statusUrl(), null);502 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);503 }).then(() => {504 assert.equal(BuildRequest.all().length, 8);505 assert.equal(BuildRequest.findById(700).status(), 'completed');506 assert.equal(BuildRequest.findById(700).statusUrl(), MockData.statusUrl('some-builder-1', 123));507 assert.equal(BuildRequest.findById(701).status(), 'running');508 assert.equal(BuildRequest.findById(701).statusUrl(), MockData.statusUrl('some-builder-1', 124));509 assert.equal(BuildRequest.findById(702).status(), 'scheduled');510 assert.equal(BuildRequest.findById(702).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');511 assert.equal(BuildRequest.findById(703).status(), 'pending');512 assert.equal(BuildRequest.findById(703).statusUrl(), null);513 assert.equal(BuildRequest.findById(710).status(), 'scheduled');514 assert.equal(BuildRequest.findById(710).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');515 assert.equal(BuildRequest.findById(711).status(), 'pending');516 assert.equal(BuildRequest.findById(711).statusUrl(), null);517 assert.equal(BuildRequest.findById(712).status(), 'pending');518 assert.equal(BuildRequest.findById(712).statusUrl(), null);519 assert.equal(BuildRequest.findById(713).status(), 'pending');520 assert.equal(BuildRequest.findById(713).statusUrl(), null);521 });522 });523 it('should schedule a build request on the same scheduler the first request had ran', () => {524 const db = TestServer.database();525 let syncPromise;526 return Promise.all([527 MockData.addMockData(db, ['running', 'pending', 'pending', 'pending']),528 MockData.addAnotherMockTestGroup(db, ['running', 'pending', 'pending', 'pending'])529 ]).then(() => {530 return Manifest.fetch();531 }).then(() => {532 const config = MockData.mockTestSyncConfigWithTwoBuilders();533 const logger = new MockLogger;534 const slaveInfo = {name: 'sync-slave', password: 'password'};535 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);536 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());537 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());538 MockRemoteAPI.reset();539 return MockRemoteAPI.waitForRequest();540 }).then(() => {541 assert.equal(MockRemoteAPI.requests.length, 2);542 assert.equal(MockRemoteAPI.requests[0].method, 'GET');543 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));544 MockRemoteAPI.requests[0].resolve({});545 assert.equal(MockRemoteAPI.requests[1].method, 'GET');546 assert.equal(MockRemoteAPI.requests[1].url, MockData.pendingBuildsUrl('some builder 2'));547 MockRemoteAPI.requests[1].resolve({});548 return MockRemoteAPI.waitForRequest();549 }).then(() => {550 assert.equal(MockRemoteAPI.requests.length, 4);551 assert.equal(MockRemoteAPI.requests[2].method, 'GET');552 assert.equal(MockRemoteAPI.requests[2].url, MockData.recentBuildsUrl('some-builder-1', 2));553 MockRemoteAPI.requests[2].resolve(MockData.runningBuild({buildRequestId: 710}));554 assert.equal(MockRemoteAPI.requests[3].method, 'GET');555 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some builder 2', 2));556 MockRemoteAPI.requests[3].resolve(MockData.runningBuild({builderId: MockData.builderIDForName('some builder 2'), buildRequestId: 700}));557 return MockRemoteAPI.waitForRequest();558 }).then(() => {559 assert.equal(MockRemoteAPI.requests.length, 6);560 assert.equal(MockRemoteAPI.requests[4].method, 'POST');561 assert.equal(MockRemoteAPI.requests[4].url, '/api/v2/forceschedulers/force-some-builder-2');562 assert.deepEqual(MockRemoteAPI.requests[4].data, {'id': '701', 'jsonrpc': '2.0', 'method': 'force', 'params':563 {'wk': '192736', 'os': '10.11 15A284', 'build-request-id': '701', 'forcescheduler': 'force-some-builder-2'}});564 MockRemoteAPI.requests[4].resolve('OK');565 assert.equal(MockRemoteAPI.requests[5].method, 'POST');566 assert.equal(MockRemoteAPI.requests[5].url, '/api/v2/forceschedulers/force-some-builder-1');567 assert.deepEqual(MockRemoteAPI.requests[5].data, {'id': '711', 'jsonrpc': '2.0', 'method': 'force', 'params':568 {'wk': '192736', 'os': '10.11 15A284', 'build-request-id': '711', 'forcescheduler': 'force-some-builder-1'}});569 MockRemoteAPI.requests[5].resolve('OK');570 return MockRemoteAPI.waitForRequest();571 }).then(() => {572 assert.equal(MockRemoteAPI.requests.length, 8);573 assert.equal(MockRemoteAPI.requests[6].method, 'GET');574 assert.equal(MockRemoteAPI.requests[6].url, MockData.pendingBuildsUrl('some-builder-1'));575 MockRemoteAPI.requests[6].resolve(MockData.pendingBuild({buildRequestId: 711, buildbotBuildRequestId: 17}));576 assert.equal(MockRemoteAPI.requests[7].method, 'GET');577 assert.equal(MockRemoteAPI.requests[7].url, MockData.pendingBuildsUrl('some builder 2'));578 MockRemoteAPI.requests[7].resolve(MockData.pendingBuild({builderId: MockData.builderIDForName('some builder 2'), buildRequestId: 701, buildbotBuildRequestId: 17}));579 return MockRemoteAPI.waitForRequest();580 }).then(() => {581 assert.equal(MockRemoteAPI.requests.length, 10);582 assert.equal(MockRemoteAPI.requests[8].method, 'GET');583 assert.equal(MockRemoteAPI.requests[8].url, MockData.recentBuildsUrl('some-builder-1', 2));584 MockRemoteAPI.requests[8].resolve(MockData.runningBuild({buildRequestId: 710}));585 assert.equal(MockRemoteAPI.requests[9].method, 'GET');586 assert.equal(MockRemoteAPI.requests[9].url, MockData.recentBuildsUrl('some builder 2', 2));587 MockRemoteAPI.requests[9].resolve(MockData.runningBuild({builderId: MockData.builderIDForName('some builder 2'), buildRequestId: 700}));588 return syncPromise;589 }).then(() => {590 assert.equal(BuildRequest.all().length, 8);591 assert.equal(BuildRequest.findById(700).status(), 'running');592 assert.equal(BuildRequest.findById(700).statusUrl(), null);593 assert.equal(BuildRequest.findById(701).status(), 'pending');594 assert.equal(BuildRequest.findById(701).statusUrl(), null);595 assert.equal(BuildRequest.findById(702).status(), 'pending');596 assert.equal(BuildRequest.findById(702).statusUrl(), null);597 assert.equal(BuildRequest.findById(703).status(), 'pending');598 assert.equal(BuildRequest.findById(703).statusUrl(), null);599 assert.equal(BuildRequest.findById(710).status(), 'running');600 assert.equal(BuildRequest.findById(710).statusUrl(), null);601 assert.equal(BuildRequest.findById(711).status(), 'pending');602 assert.equal(BuildRequest.findById(711).statusUrl(), null);603 assert.equal(BuildRequest.findById(712).status(), 'pending');604 assert.equal(BuildRequest.findById(712).statusUrl(), null);605 assert.equal(BuildRequest.findById(713).status(), 'pending');606 assert.equal(BuildRequest.findById(713).statusUrl(), null);607 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);608 }).then(() => {609 assert.equal(BuildRequest.all().length, 8);610 assert.equal(BuildRequest.findById(700).status(), 'running');611 assert.equal(BuildRequest.findById(700).statusUrl(), MockData.statusUrl('some builder 2', 124));612 assert.equal(BuildRequest.findById(701).status(), 'scheduled');613 assert.equal(BuildRequest.findById(701).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');614 assert.equal(BuildRequest.findById(702).status(), 'pending');615 assert.equal(BuildRequest.findById(702).statusUrl(), null);616 assert.equal(BuildRequest.findById(703).status(), 'pending');617 assert.equal(BuildRequest.findById(703).statusUrl(), null);618 assert.equal(BuildRequest.findById(710).status(), 'running');619 assert.equal(BuildRequest.findById(710).statusUrl(), MockData.statusUrl('some-builder-1', 124));620 assert.equal(BuildRequest.findById(711).status(), 'scheduled');621 assert.equal(BuildRequest.findById(711).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');622 assert.equal(BuildRequest.findById(712).status(), 'pending');623 assert.equal(BuildRequest.findById(712).statusUrl(), null);624 assert.equal(BuildRequest.findById(713).status(), 'pending');625 assert.equal(BuildRequest.findById(713).statusUrl(), null);626 });627 });628 it('should wait for POST to complete before trying to poll buildbot again', () => {629 const db = TestServer.database();630 const requests = MockRemoteAPI.requests;631 let syncPromise;632 return Promise.all([633 MockData.addMockData(db, ['pending', 'pending', 'pending', 'pending']),634 MockData.addAnotherMockTestGroup(db, ['pending', 'pending', 'pending', 'pending'])635 ]).then(() => Manifest.fetch()).then(() => {636 const config = MockData.mockTestSyncConfigWithSingleBuilder();637 const logger = new MockLogger;638 const slaveInfo = {name: 'sync-slave', password: 'password'};639 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);640 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());641 assertRequestAndResolve(requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());642 MockRemoteAPI.reset();643 return MockRemoteAPI.waitForRequest();644 }).then(() => {645 assert.equal(requests.length, 1);646 assert.equal(requests[0].method, 'GET');647 assert.equal(requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));648 MockRemoteAPI.requests[0].resolve({});649 return MockRemoteAPI.waitForRequest();650 }).then(() => {651 assert.equal(requests.length, 2);652 assert.equal(requests[1].method, 'GET');653 assert.equal(requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));654 requests[1].resolve({});655 return MockRemoteAPI.waitForRequest();656 }).then(() => {657 assert.equal(requests.length, 3);658 assert.equal(requests[2].method, 'POST');659 assert.equal(requests[2].url, '/api/v2/forceschedulers/force-some-builder-1');660 assert.deepEqual(requests[2].data, {'id': '700', 'jsonrpc': '2.0', 'method': 'force', 'params':661 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': '700', 'forcescheduler': 'force-some-builder-1'}});662 return new Promise((resolve) => setTimeout(resolve, 10));663 }).then(() => {664 assert.equal(requests.length, 3);665 requests[2].resolve('OK');666 return MockRemoteAPI.waitForRequest();667 }).then(() => {668 assert.equal(requests.length, 4);669 assert.equal(requests[3].method, 'GET');670 assert.equal(requests[3].url, MockData.pendingBuildsUrl('some-builder-1'));671 MockRemoteAPI.requests[3].resolve(MockData.pendingBuild({buildRequestId: 700, buildbotBuildRequestId: 17}));672 return MockRemoteAPI.waitForRequest();673 }).then(() => {674 assert.equal(requests.length, 5);675 assert.equal(requests[4].method, 'GET');676 assert.equal(requests[4].url, MockData.recentBuildsUrl('some-builder-1', 2));677 requests[4].resolve({});678 return syncPromise;679 }).then(() => {680 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);681 }).then(() => {682 assert.equal(BuildRequest.all().length, 8);683 assert.equal(BuildRequest.findById(700).status(), 'scheduled');684 assert.equal(BuildRequest.findById(700).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');685 assert.equal(BuildRequest.findById(701).status(), 'pending');686 assert.equal(BuildRequest.findById(701).statusUrl(), null);687 assert.equal(BuildRequest.findById(702).status(), 'pending');688 assert.equal(BuildRequest.findById(702).statusUrl(), null);689 assert.equal(BuildRequest.findById(703).status(), 'pending');690 assert.equal(BuildRequest.findById(703).statusUrl(), null);691 assert.equal(BuildRequest.findById(710).status(), 'pending');692 assert.equal(BuildRequest.findById(710).statusUrl(), null);693 assert.equal(BuildRequest.findById(711).status(), 'pending');694 assert.equal(BuildRequest.findById(711).statusUrl(), null);695 assert.equal(BuildRequest.findById(712).status(), 'pending');696 assert.equal(BuildRequest.findById(712).statusUrl(), null);697 assert.equal(BuildRequest.findById(713).status(), 'pending');698 assert.equal(BuildRequest.findById(713).statusUrl(), null);699 });700 });701 it('should recover from multiple test groups running simultenously', () => {702 const db = TestServer.database();703 const requests = MockRemoteAPI.requests;704 let syncPromise;705 let triggerable;706 return Promise.all([707 MockData.addMockData(db, ['completed', 'pending', 'pending', 'pending']),708 MockData.addAnotherMockTestGroup(db, ['completed', 'pending', 'pending', 'pending'])709 ]).then(() => {710 return Manifest.fetch();711 }).then(() => {712 const config = MockData.mockTestSyncConfigWithSingleBuilder();713 const logger = new MockLogger;714 const slaveInfo = {name: 'sync-slave', password: 'password'};715 triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);716 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());717 assertRequestAndResolve(requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());718 MockRemoteAPI.reset();719 return MockRemoteAPI.waitForRequest();720 }).then(() => {721 assert.equal(requests.length, 1);722 assertRequestAndResolve(requests[0], 'GET', MockData.pendingBuildsUrl('some-builder-1'), {});723 return MockRemoteAPI.waitForRequest();724 }).then(() => {725 assert.equal(requests.length, 2);726 assertRequestAndResolve(requests[1], 'GET', MockData.recentBuildsUrl('some-builder-1', 2),727 {'builds' : [MockData.runningBuildData({buildRequestId: 700}), MockData.finishedBuildData({buildRequestId: 710})]});728 return MockRemoteAPI.waitForRequest();729 }).then(() => {730 assert.equal(requests.length, 3);731 assertRequestAndResolve(requests[2], 'POST', '/api/v2/forceschedulers/force-some-builder-1');732 assert.deepEqual(MockRemoteAPI.requests[2].data, {'id': '701', 'jsonrpc': '2.0', 'method': 'force', 'params':733 {'wk': '192736', 'os': '10.11 15A284', 'build-request-id': '701', 'forcescheduler': 'force-some-builder-1'}});734 return MockRemoteAPI.waitForRequest();735 }).then(() => {736 assert.equal(requests.length, 4);737 assertRequestAndResolve(requests[3], 'GET', MockData.pendingBuildsUrl('some-builder-1'),738 MockData.pendingBuild({buildRequestId: 701, buildbotBuildRequestId: 17}));739 return MockRemoteAPI.waitForRequest();740 }).then(() => {741 assert.equal(requests.length, 5);742 assertRequestAndResolve(requests[4], 'GET', MockData.recentBuildsUrl('some-builder-1', 2),743 {'builds': [MockData.runningBuildData({buildRequestId: 700}), MockData.finishedBuildData({buildRequestId: 710})]});744 return syncPromise;745 }).then(() => {746 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());747 assertRequestAndResolve(requests[5], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());748 return MockRemoteAPI.waitForRequest();749 }).then(() => {750 assert.equal(requests.length, 7);751 assertRequestAndResolve(requests[6], 'GET', MockData.pendingBuildsUrl('some-builder-1'), {});752 return MockRemoteAPI.waitForRequest();753 }).then(() => {754 assert.equal(requests.length, 8);755 assertRequestAndResolve(requests[7], 'GET', MockData.recentBuildsUrl('some-builder-1', 2),756 {'builds': [MockData.runningBuildData({buildRequestId: 701}), MockData.runningBuildData({buildRequestId: 700})]});757 return MockRemoteAPI.waitForRequest();758 }).then(() => {759 assert.equal(requests.length, 9);760 assertRequestAndResolve(requests[8], 'GET', MockData.pendingBuildsUrl('some-builder-1'), {});761 return MockRemoteAPI.waitForRequest();762 }).then(() => {763 assert.equal(requests.length, 10);764 assertRequestAndResolve(requests[9], 'GET', MockData.recentBuildsUrl('some-builder-1', 2),765 {'builds': [MockData.runningBuildData({buildRequestId: 701}), MockData.runningBuildData({buildRequestId: 700})]});766 return syncPromise;767 });768 });769 it('should recover from missing failed build request', () => {770 const db = TestServer.database();771 let syncPromise;772 return MockData.addMockData(db, ['failed', 'pending', 'pending', 'pending']).then(() => {773 return Manifest.fetch();774 }).then(() => {775 const config = MockData.mockTestSyncConfigWithSingleBuilder();776 const logger = new MockLogger;777 const slaveInfo = {name: 'sync-slave', password: 'password'};778 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);779 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());780 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());781 MockRemoteAPI.reset();782 return MockRemoteAPI.waitForRequest();783 }).then(() => {784 assert.equal(MockRemoteAPI.requests.length, 1);785 assert.equal(MockRemoteAPI.requests[0].method, 'GET');786 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));787 MockRemoteAPI.requests[0].resolve({});788 return MockRemoteAPI.waitForRequest();789 }).then(() => {790 assert.equal(MockRemoteAPI.requests.length, 2);791 assert.equal(MockRemoteAPI.requests[1].method, 'GET');792 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));793 MockRemoteAPI.requests[1].resolve({});794 return MockRemoteAPI.waitForRequest();795 }).then(() => {796 assert.equal(MockRemoteAPI.requests.length, 3);797 assert.equal(MockRemoteAPI.requests[2].method, 'POST');798 assert.equal(MockRemoteAPI.requests[2].url, '/api/v2/forceschedulers/force-some-builder-1');799 assert.deepEqual(MockRemoteAPI.requests[2].data, {'id': '701', 'jsonrpc': '2.0', 'method': 'force', 'params':800 {'wk': '192736', 'os': '10.11 15A284', 'build-request-id': '701', 'forcescheduler': 'force-some-builder-1'}});801 MockRemoteAPI.requests[2].resolve('OK');802 return MockRemoteAPI.waitForRequest();803 }).then(() => {804 assert.equal(MockRemoteAPI.requests.length, 4);805 assert.equal(MockRemoteAPI.requests[3].method, 'GET');806 assert.equal(MockRemoteAPI.requests[3].url, MockData.pendingBuildsUrl('some-builder-1'));807 MockRemoteAPI.requests[3].resolve(MockData.pendingBuild({buildRequestId: 701, buildbotBuildRequestId: 17}));808 return MockRemoteAPI.waitForRequest();809 }).then(() => {810 assert.equal(MockRemoteAPI.requests.length, 5);811 assert.equal(MockRemoteAPI.requests[4].method, 'GET');812 assert.equal(MockRemoteAPI.requests[4].url, MockData.recentBuildsUrl('some-builder-1', 2));813 MockRemoteAPI.requests[4].resolve({});814 return syncPromise;815 }).then(() => {816 assert.equal(BuildRequest.all().length, 4);817 assert.equal(BuildRequest.findById(700).status(), 'failed');818 assert.equal(BuildRequest.findById(700).statusUrl(), null);819 assert.equal(BuildRequest.findById(701).status(), 'pending');820 assert.equal(BuildRequest.findById(701).statusUrl(), null);821 assert.equal(BuildRequest.findById(702).status(), 'pending');822 assert.equal(BuildRequest.findById(702).statusUrl(), null);823 assert.equal(BuildRequest.findById(703).status(), 'pending');824 assert.equal(BuildRequest.findById(703).statusUrl(), null);825 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);826 }).then(() => {827 assert.equal(BuildRequest.all().length, 4);828 assert.equal(BuildRequest.findById(700).status(), 'failed');829 assert.equal(BuildRequest.findById(700).statusUrl(), null);830 assert.equal(BuildRequest.findById(701).status(), 'scheduled');831 assert.equal(BuildRequest.findById(701).statusUrl(), 'http://build.webkit.org/#/buildrequests/17');832 assert.equal(BuildRequest.findById(702).status(), 'pending');833 assert.equal(BuildRequest.findById(702).statusUrl(), null);834 assert.equal(BuildRequest.findById(703).status(), 'pending');835 assert.equal(BuildRequest.findById(703).statusUrl(), null);836 });837 });838 it('should update the status of a supposedly scheduled build that went missing', () => {839 const db = TestServer.database();840 let syncPromise;841 return MockData.addMockData(db, ['scheduled', 'pending', 'pending', 'pending']).then(() => {842 return Manifest.fetch();843 }).then(() => {844 const config = MockData.mockTestSyncConfigWithSingleBuilder();845 const logger = new MockLogger;846 const slaveInfo = {name: 'sync-slave', password: 'password'};847 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);848 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());849 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());850 MockRemoteAPI.reset();851 return MockRemoteAPI.waitForRequest();852 }).then(() => {853 assert.equal(MockRemoteAPI.requests.length, 1);854 assert.equal(MockRemoteAPI.requests[0].method, 'GET');855 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));856 MockRemoteAPI.requests[0].resolve({});857 return MockRemoteAPI.waitForRequest();858 }).then(() => {859 assert.equal(MockRemoteAPI.requests.length, 2);860 assert.equal(MockRemoteAPI.requests[1].method, 'GET');861 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));862 MockRemoteAPI.requests[1].resolve({});863 return MockRemoteAPI.waitForRequest();864 }).then(() => {865 assert.equal(MockRemoteAPI.requests.length, 3);866 assert.equal(MockRemoteAPI.requests[2].method, 'GET');867 assert.equal(MockRemoteAPI.requests[2].url, MockData.pendingBuildsUrl('some-builder-1'));868 MockRemoteAPI.requests[2].resolve({});869 return MockRemoteAPI.waitForRequest();870 }).then(() => {871 assert.equal(MockRemoteAPI.requests.length, 4);872 assert.equal(MockRemoteAPI.requests[3].method, 'GET');873 assert.equal(MockRemoteAPI.requests[3].url, MockData.recentBuildsUrl('some-builder-1', 2));874 MockRemoteAPI.requests[3].resolve({});875 return syncPromise;876 }).then(() => {877 assert.equal(BuildRequest.all().length, 4);878 assert.equal(BuildRequest.findById(700).status(), 'scheduled');879 assert.equal(BuildRequest.findById(701).status(), 'pending');880 assert.equal(BuildRequest.findById(702).status(), 'pending');881 assert.equal(BuildRequest.findById(703).status(), 'pending');882 return BuildRequest.fetchForTriggerable(MockData.mockTestSyncConfigWithTwoBuilders().triggerableName);883 }).then(() => {884 assert.equal(BuildRequest.all().length, 4);885 assert.equal(BuildRequest.findById(700).status(), 'failed');886 assert.equal(BuildRequest.findById(701).status(), 'pending');887 assert.equal(BuildRequest.findById(702).status(), 'pending');888 assert.equal(BuildRequest.findById(703).status(), 'pending');889 });890 });891 it('should schedule a build request of an user created test group before ones created by automatic change detection', () => {892 const db = TestServer.database();893 let syncPromise;894 return Promise.all([895 MockData.addMockData(db, ['pending', 'pending', 'pending', 'pending']),896 MockData.addAnotherMockTestGroup(db, ['pending', 'pending', 'pending', 'pending'], 'rniwa'),897 ]).then(() => {898 return Manifest.fetch();899 }).then(() => {900 const config = MockData.mockTestSyncConfigWithSingleBuilder();901 const logger = new MockLogger;902 const slaveInfo = {name: 'sync-slave', password: 'password'};903 const triggerable = new BuildbotTriggerable(config, TestServer.remoteAPI(), MockRemoteAPI, slaveInfo, logger);904 syncPromise = triggerable.initSyncers().then(() => triggerable.syncOnce());905 assertRequestAndResolve(MockRemoteAPI.requests[0], 'GET', MockData.buildbotBuildersURL(), MockData.mockBuildbotBuilders());906 MockRemoteAPI.reset();907 return MockRemoteAPI.waitForRequest();908 }).then(() => {909 assert.equal(MockRemoteAPI.requests.length, 1);910 assert.equal(MockRemoteAPI.requests[0].method, 'GET');911 assert.equal(MockRemoteAPI.requests[0].url, MockData.pendingBuildsUrl('some-builder-1'));912 MockRemoteAPI.requests[0].resolve({});913 return MockRemoteAPI.waitForRequest();914 }).then(() => {915 assert.equal(MockRemoteAPI.requests.length, 2);916 assert.equal(MockRemoteAPI.requests[1].method, 'GET');917 assert.equal(MockRemoteAPI.requests[1].url, MockData.recentBuildsUrl('some-builder-1', 2));918 MockRemoteAPI.requests[1].resolve({});919 return MockRemoteAPI.waitForRequest();920 }).then(() => {921 assert.equal(MockRemoteAPI.requests.length, 3);922 assert.equal(MockRemoteAPI.requests[2].method, 'POST');923 assert.equal(MockRemoteAPI.requests[2].url, '/api/v2/forceschedulers/force-some-builder-1');924 assert.deepEqual(MockRemoteAPI.requests[2].data, {'id': '710', 'jsonrpc': '2.0', 'method': 'force', 'params':925 {'wk': '191622', 'os': '10.11 15A284', 'build-request-id': '710', 'forcescheduler': 'force-some-builder-1'}});926 MockRemoteAPI.requests[2].resolve('OK');927 });928 });929 });930 describe('updateTriggerables', () => {931 function refetchManifest()932 {933 MockData.resetV3Models();...

Full Screen

Full Screen

privileged-api-tests.js

Source:privileged-api-tests.js Github

copy

Full Screen

...53 requests[0].resolve({54 token: 'abc',55 expiration: Date.now() + 100 * 1000,56 });57 return MockRemoteAPI.waitForRequest().then(() => {58 assert.equal(requests.length, 2);59 assert.equal(requests[1].url, '/privileged-api/test');60 });61 });62 it('should not generate a new token if the existing token had not been expired', () => {63 PrivilegedAPI.sendRequest('test', {});64 assert.equal(requests.length, 1);65 assert.equal(requests[0].url, '/privileged-api/generate-csrf-token');66 requests[0].resolve({67 token: 'abc',68 expiration: Date.now() + 3600 * 1000,69 });70 return MockRemoteAPI.waitForRequest().then(() => {71 assert.equal(requests.length, 2);72 assert.equal(requests[1].url, '/privileged-api/test');73 PrivilegedAPI.sendRequest('test2', {});74 return MockRemoteAPI.waitForRequest();75 }).then(() => {76 assert.equal(requests.length, 3);77 assert.equal(requests[2].url, '/privileged-api/test2');78 });79 });80 it('should reject immediately when a token generation had failed', () => {81 const request = PrivilegedAPI.sendRequest('test', {});82 let caught = false;83 request.catch(() => { caught = true; });84 assert.equal(requests.length, 1);85 assert.equal(requests[0].url, '/privileged-api/generate-csrf-token');86 requests[0].reject({status: 'FailedToGenerateToken'});87 return new Promise((resolve) => setTimeout(resolve, 0)).then(() => {88 assert.equal(requests.length, 1);89 assert(caught);90 });91 });92 it('should re-generate token when it had become invalid', () => {93 PrivilegedAPI.sendRequest('test', {});94 assert.equal(requests.length, 1);95 assert.equal(requests[0].url, '/privileged-api/generate-csrf-token');96 requests[0].resolve({97 token: 'abc',98 expiration: Date.now() + 3600 * 1000,99 });100 return MockRemoteAPI.waitForRequest().then(() => {101 assert.equal(requests.length, 2);102 assert.equal(requests[1].data.token, 'abc');103 assert.equal(requests[1].url, '/privileged-api/test');104 requests[1].reject('InvalidToken');105 return MockRemoteAPI.waitForRequest();106 }).then(() => {107 assert.equal(requests.length, 3);108 assert.equal(requests[2].url, '/privileged-api/generate-csrf-token');109 requests[2].resolve({110 token: 'def',111 expiration: Date.now() + 3600 * 1000,112 });113 return MockRemoteAPI.waitForRequest();114 }).then(() => {115 assert.equal(requests.length, 4);116 assert.equal(requests[3].data.token, 'def');117 assert.equal(requests[3].url, '/privileged-api/test');118 });119 });120 it('should not re-generate token when the re-fetched token was invalid', () => {121 const request = PrivilegedAPI.sendRequest('test', {});122 let caught = false;123 request.catch(() => caught = true);124 assert.equal(requests.length, 1);125 assert.equal(requests[0].url, '/privileged-api/generate-csrf-token');126 requests[0].resolve({127 token: 'abc',128 expiration: Date.now() + 3600 * 1000,129 });130 return MockRemoteAPI.waitForRequest().then(() => {131 assert.equal(requests.length, 2);132 assert.equal(requests[1].data.token, 'abc');133 assert.equal(requests[1].url, '/privileged-api/test');134 requests[1].reject('InvalidToken');135 return MockRemoteAPI.waitForRequest();136 }).then(() => {137 assert.equal(requests.length, 3);138 assert.equal(requests[2].url, '/privileged-api/generate-csrf-token');139 requests[2].resolve({140 token: 'def',141 expiration: Date.now() + 3600 * 1000,142 });143 return MockRemoteAPI.waitForRequest();144 }).then(() => {145 assert.equal(requests.length, 4);146 assert.equal(requests[3].data.token, 'def');147 assert.equal(requests[3].url, '/privileged-api/test');148 requests[3].reject('InvalidToken');149 return new Promise((resolve) => setTimeout(resolve, 0));150 }).then(() => {151 assert(caught);152 assert.equal(requests.length, 4);153 });154 });155 });156});157describe('NodePrivilegedAPI', () => {...

Full Screen

Full Screen

install_ps.js

Source:install_ps.js Github

copy

Full Screen

...77}78const interceptReq = async (browser, page) => {79// console.log('je suis ici')80 let date_debut =new Date()81 const step1 = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?populateDatabase=true') && !(request.failure()), { timeout: 300000});82 console.log('step1 populateDatabase')83 const step2 = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?configureShop=true') && !(request.failure()), { timeout: 300000});84 console.log('step2 configureShop')85 const step3 = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?installFixtures=true') && !(request.failure()), { timeout: 300000});86 console.log('step3 installFixtures')87 const step4 = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?installModules=true') && !(request.failure()), { timeout: 300000});88 console.log('step4 installModules')89 const step5 = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?installModulesAddons=true') && !(request.failure()), { timeout: 300000});90 console.log('step5 installModulesAddons')91 const finalRequest = await page.waitForRequest(request => request.url().toString().startsWith(URL+ '/index.php?installTheme=true') && !(request.failure()), { timeout: 3000000});92// const finalRequest = await page.waitForRequest(request => request.url() === 'http://example.com' && request.method() === 'GET');93 let date_fin =new Date()94 console.log('----shop successfully created in : ' + ((date_fin.getTime() - date_debut.getTime())/1000) + ' sec')95// console.log('----shop successfully created in : ' + ((date_fin.getTime() - date_debut.getTime())/60000) + ' min')96 return finalRequest.url();97}98const run = async () => {99 const browser = await puppeteer.launch({ headless: false })100 const page = await browser.newPage()101 const populateInstall = await populatePS(browser, page)102 const interceptRequest = await interceptReq(browser, page)103 browser.close()104}105run()106 .then(value => {...

Full Screen

Full Screen

organiser.js

Source:organiser.js Github

copy

Full Screen

1'use strict'2const Telegram = require('telegram-node-bot');3var fs = require('fs');4var dataObj = JSON.parse(fs.readFileSync('./datastore/data.json', 'utf8'));5class OrganiserController extends Telegram.TelegramBaseController {6 editDetailsHandler($) {7 if ($.message.from.username == dataObj.masterUserName) {8 $.sendMessage('Old Details : \n\n' + dataObj.details + '\n\nEnter the New Details :');9 $.waitForRequest10 .then($ => {11 dataObj.details = $.message.text;12 $.sendMessage(`Details Updated! New Details are : \n\n${dataObj.details}`);13 });14 } else15 $.sendMessage('You are not authorized for this command!');16 }17 editCriteriaHandler($) {18 if ($.message.from.username == dataObj.masterUserName) {19 $.sendMessage('Old Judging Criteria : \n\n' + dataObj.criteria + '\n\nEnter the New Judging Criteria :');20 $.waitForRequest21 .then($ => {22 dataObj.criteria = $.message.text;23 $.sendMessage(`Judging Criteria Updated! New Judging Criteria is : \n\n${dataObj.criteria}`);24 });25 } else26 $.sendMessage('You are not authorized for this command!');27 }28 editScheduleHandler($) {29 if ($.message.from.username == dataObj.masterUserName) {30 $.sendMessage('Old Schedule : \n\n' + dataObj.schedule + '\n\nEnter the New Schedule :');31 $.waitForRequest32 .then($ => {33 dataObj.schedule = $.message.text;34 $.sendMessage(`Schedule Updated! New Schedule is : \n\n${dataObj.schedule}`);35 });36 } else37 $.sendMessage('You are not authorized for this command!');38 }39 editLocationHandler($) {40 if ($.message.from.username == dataObj.masterUserName) {41 $.sendMessage('Enter the New Location\'s Latitude :');42 $.waitForRequest43 .then($ => {44 dataObj.location.latitude = $.message.text;45 $.sendMessage('Enter the New Location\'s Longitude :');46 $.waitForRequest47 .then($ => {48 dataObj.location.longitude = $.message.text;49 $.sendMessage(`Location Updated! New Location is : `);50 $.sendLocation(dataObj.location.latitude, dataObj.location.longitude);51 })52 });53 } else54 $.sendMessage('You are not authorized for this command!');55 }56 allApplicantsHandler($) {57 if ($.message.from.username == dataObj.masterUserName) {58 let applicantsList = 'List of Applicants\n\n';59 dataObj.applicants.forEach((applicant, i) => {60 applicantsList += `${i+1}. ${applicant.name}\n`;61 })62 $.sendMessage(applicantsList);63 }64 else65 $.sendMessage('You are not authorized for this command!');66 }67 announcementHandler($) {68 if ($.message.from.username == dataObj.masterUserName) {69 $.sendMessage("This announcement will be sent to all the applicants :\n\nEnter the announcement :")70 $.waitForRequest71 .then($ => {72 dataObj.announcements.push($.message.text);73 dataObj.applicants.forEach(applicant => {74 $.sendMessage(`ANNOUNCEMENT\n\n${$.message.text}`, {'chat_id': applicant.chatID});75 });76 $.sendMessage(`${$.message.text}\n\nThis announcement has been sent to all the applicants.`);77 });78 }79 else80 $.sendMessage('You are not authorized for this command!');81 }82 get routes() {83 return {84 'editDetailsCommand': 'editDetailsHandler',85 'editCriteriaCommand': 'editCriteriaHandler',86 'editScheduleCommand': 'editScheduleHandler',87 'editLocationCommand': 'editLocationHandler',88 'allApplicantsCommand': 'allApplicantsHandler',89 'announcementCommand': 'announcementHandler',90 };91 }92}...

Full Screen

Full Screen

book.js

Source:book.js Github

copy

Full Screen

1/**2 * @author Alexi Jamal3 * 4 */5 "use strict";6 const Telegram = require("telegram-node-bot");7 8 class BookController extends Telegram.TelegramBaseController {9 bookHandler($) {10 $.sendMessage("Available services to book:\n1. Home cleaning\n2. Pest control");11 $.sendMessage("Send the number of the service you want to book.");12 $.waitForRequest.then($ => { 13 let service = $.message.text;14 if(isNaN(service)){15 $.sendMessage("Please send a valid number");16 } else {17 if(service == 1){18 $.sendMessage("What time?");19 $.waitForRequest.then($ => {20 let userTime = $.message.text;21 $.sendMessage(`Home cleaning at ${userTime}, what date?`);22 $.waitForRequest.then($ => {23 let userDate = $.message.text;24 $.sendMessage(`Home cleaning at ${userTime} on ${userDate}, got it.`);25 $.sendMessage("Kindly provide us with your phone number");26 $.waitForRequest.then($ => {27 let userPhone = $.message.text;28 $.sendMessage("Awesome! A team member will call to confirm the booking.\nThank you.")29 let textToReturn = `${$.message.from.firstName} booked "home cleaning" on ${userDate} at ${userTime}\nCall ${userPhone} to confirm`30 this._api.sendMessage('379633660', textToReturn)31 })32 })33 })34 }35 if(service == 2){36 $.sendMessage("What time?");37 $.waitForRequest.then($ => {38 let userTime = $.message.text;39 $.sendMessage(`Pest control at ${userTime}, what date?`);40 $.waitForRequest.then($ => {41 let userDate = $.message.text;42 $.sendMessage(`Pest control at ${userTime} on ${userDate}, got it.`);43 $.sendMessage("Kindly provide us with your phone number");44 $.waitForRequest.then($ => {45 let userPhone = $.message.text;46 $.sendMessage("Awesome! A team member will call to confirm the booking.\nThank you.");47 let textToReturn = `${$.message.from.firstName} booked "pest control" on ${userDate} at ${userTime}\nCall ${userPhone} to confirm`48 this._api.sendMessage('379633660', textToReturn)49 })50 })51 })52 }53 }54 })55 }56 57 get routes() {58 return {59 bookCommand: "bookHandler"60 };61 }62 }63 64 module.exports = BookController;...

Full Screen

Full Screen

worker.js

Source:worker.js Github

copy

Full Screen

...6 DAY = 86400000,7 ONE = 1,8 ZERO = 0,9 DB_VERSION = 1;10function waitForRequest(request) {11 return new Promise((resolve, reject) => {12 request.addEventListener("success", resolve, LISTENER_OPTS);13 request.addEventListener("error", reject, LISTENER_OPTS);14 });15}16function expunge(database) {17 const transaction = database.transaction(STORE, 'readwrite'),18 store = transaction.objectStore(STORE),19 index = store.index('expires'),20 request = index.openCursor(),21 start = new Date(ZERO),22 end = new Date(Date.now() - DAY);23 return new Promise((resolve, reject) => {24 request.addEventListener("success", (event) => {25 const cursor = event.target.result;26 if(cursor) {27 if(cursor.value.expires > start && cursor.value.expires <= end) {28 waitForRequest(cursor.delete()).catch(console.error);29 }30 cursor.continue();31 }32 else {33 resolve();34 postMessage("expunged");35 }36 });37 request.addEventListener("error", reject);38 });39}40function timeout(database) {41 expunge(database).catch(console.error);42 setInterval(() => {43 expunge(database).catch(console.error);44 }, DAY);45}46function getUntilMidnight() {47 const now = new Date(),48 midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + ONE, ZERO, ZERO, ZERO, ZERO);49 return midnight.getTime() - Date.now();50}51const request = indexedDB.open(STORE, DB_VERSION);52waitForRequest(request)53 .then(({ target: { result: database } }) => {54 setTimeout(() => {55 timeout(database);56 }, getUntilMidnight());57 return expunge(database);58 })...

Full Screen

Full Screen

watch.e2e.js

Source:watch.e2e.js Github

copy

Full Screen

...19 const chat = '.panel-block p'20 const input = 'xpath=(//input)[1]';21 const sendButton = 'xpath=//button[text()="Send"]';22 await Promise.all([23 page.waitForRequest('**/interact'),24 page.waitForResponse('**/interact'),25 page.fill(input, 'Hello!')26 ]);27 await Promise.all([28 page.waitForRequest('**/interact'),29 page.waitForResponse('**/interact'),30 page.click(sendButton)31 ]);32 expect(page).toHaveText(chat, "Tim: 'Hello!'");33 await Promise.all([34 page.waitForRequest('**/interact'),35 page.waitForResponse('**/interact'),36 // We can recycle the selector because the first input is37 // temporarily replaced by a Done at this stage.38 page.fill(input, 'Hi there!')39 ]);40 [request, resp] = await Promise.all([41 page.waitForRequest('**/interact'),42 page.waitForResponse('**/interact'),43 page.click(sendButton)44 ]);45 expect(page).toHaveText(chat, "Tim: 'Hello!'\nNico: 'Hi there!'");46 });...

Full Screen

Full Screen

mdata-worker.js

Source:mdata-worker.js Github

copy

Full Screen

...13const MDataIndexer = require('./MdataIndexer.js');14async function main(){15 console.info(`Sleeping for ${process.env.BOOTSTRAP_SLEEP_SECS} secs`);16 await sleep(process.env.BOOTSTRAP_SLEEP_SECS*1000);17 waitForRequest();18}19async function waitForRequest() {20 client.brpop(['mdata_org_index', 1], async function (list, items) {21 if (items && items.length === 2) {22 logger.info('Received request to index org ... ');23 await handleMdataIndexRequest(JSON.parse(items[1]));24 setTimeout(waitForRequest, 3000);25 } else {26 logger.info('No active request...');27 setTimeout(waitForRequest, 3000);28 }29 30 });31}32async function handleMdataIndexRequest(authInfo) {33 let sfConn = new SFConnectionUtils();...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const [request] = await Promise.all([7 page.waitForRequest('**/complete/search', { timeout: 1000 }),8 page.fill('input[name="q"]', 'Playwright'),9 ]);10 console.log(request.url());11 await browser.close();12})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require("playwright");2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.waitForSelector("input.new-todo");7 await page.type("input.new-todo", "Learn Playwright");8 await page.keyboard.press("Enter");9 await page.type("input.new-todo", "Learn Playwright API");10 await page.keyboard.press("Enter");11 await page.type("input.new-todo", "Learn Playwright internals");12 await page.keyboard.press("Enter");13 await page.waitForSelector("input.toggle");14 await page.click("input.toggle");15 await page.click("input.toggle");16 await page.click("input.toggle");17 await page.waitForSelector("button.clear-completed");18 await page.click("button.clear-completed");19 await page.waitForSelector("label:has-text('No items left')");20 await page.close();21 await context.close();22 await browser.close();23})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.route('**/*', route => {7 route.continue();8 });9 const response = await page.waitForRequest('**/favicon.ico');10 console.log(response.url());11 await browser.close();12})();13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 await page.route('**/*', route => {19 route.continue();20 });21 const response = await page.waitForResponse('**/favicon.ico');22 console.log(response.url());23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 console.log(page.url());31 await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 console.log(page.title());39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();45 const page = await context.newPage();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 const [request] = await Promise.all([6 page.waitForRequest('**/auth/**'),7 ]);8 console.log(request.url());9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const page = await browser.newPage();15 const [response] = await Promise.all([16 page.waitForResponse('**/auth/**'),17 ]);18 console.log(response.url());19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch();24 const page = await browser.newPage();25 await page.waitForSelector('text=Submit');26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch();31 const page = await browser.newPage();32 await page.waitForTimeout(1000);33 await browser.close();34})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { waitForRequest } = require('playwright/internal/utils');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const request = await waitForRequest(page, (r) => r.url().includes('example.com'));8 console.log(request.response().status());9 await browser.close();10})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false, slowMo: 50 });4 const context = await browser.newContext();5 const page = await context.newPage();6 const [response] = await Promise.all([7 page.waitForResponse('**/complete/search?'),8 page.type('input[name="q"]', 'Hello World'),9 ]);10 console.log(response.request().url());11 await browser.close();12})();

Full Screen

Playwright tutorial

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.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful