How to use currentTime method in Playwright Internal

Best JavaScript code snippet using playwright-internal

animation.js

Source:animation.js Github

copy

Full Screen

1suite('animation', function() {2 setup(function() {3 webAnimations1.timeline._animations = [];4 });5 test('zero duration animation works', function() {6 tick(90);7 var a = document.body.animate([], 0);8 tick(100);9 assert.equal(a.startTime, 100);10 assert.equal(a.currentTime, 0);11 });12 test('playing works as expected', function() {13 tick(90);14 var a = document.body.animate([], 2000);15 tick(100);16 assert.equal(a.startTime, 100);17 assert.equal(a.currentTime, 0);18 tick(300);19 assert.equal(a.startTime, 100);20 assert.equal(a.currentTime, 200);21 });22 test('pause at start of play', function() {23 tick(90);24 var a = document.body.animate([], 2000);25 a.pause();26 tick(100);27 assert.equal(a.currentTime, 0);28 tick(300);29 a.play();30 assert.equal(a.currentTime, 0);31 tick(310);32 assert.equal(a.currentTime, 0);33 assert.equal(a.startTime, 310);34 var a = document.body.animate([], 2000);35 a.startTime = -690;36 a.pause();37 assert.equal(a.currentTime, null);38 tick(700);39 a.play();40 tick(701);41 assert.equal(a.currentTime, 1000);42 tick(800);43 assert.equal(a.currentTime, 1099);44 assert.equal(a.startTime, -299);45 });46 test('pausing works as expected', function() {47 tick(190);48 var a = document.body.animate([], 3000);49 tick(200);50 tick(1500);51 assert.equal(a.startTime, 200);52 assert.equal(a.currentTime, 1300);53 a.pause();54 assert.equal(a.startTime, null);55 assert.equal(a.currentTime, null);56 tick(2500);57 assert.equal(a.startTime, null);58 assert.equal(a.currentTime, 1300);59 a.play();60 tick(2510);61 assert.equal(a.startTime, 1210);62 assert.equal(a.currentTime, 1300);63 tick(3500);64 assert.equal(a.startTime, 1210);65 assert.equal(a.currentTime, 2290);66 });67 test('reversing works as expected', function() {68 tick(290);69 var a = document.body.animate([], 1000);70 tick(300);71 assert.equal(a.startTime, 300);72 assert.equal(a.currentTime, 0);73 tick(600);74 assert.equal(a.startTime, 300);75 assert.equal(a.currentTime, 300);76 assert.equal(a.playbackRate, 1);77 a.reverse();78 tick(600);79 assert.equal(a.startTime, 900);80 assert.equal(a.currentTime, 300);81 assert.equal(a.playbackRate, -1);82 tick(700);83 assert.equal(a.startTime, 900);84 assert.equal(a.currentTime, 200);85 });86 test('reversing after pausing', function() {87 tick(90);88 var a = document.body.animate([], 1000);89 tick(100);90 tick(600);91 a.reverse();92 tick(601);93 tick(700);94 assert.equal(a.startTime, 1101);95 assert.equal(a.currentTime, 401);96 });97 test('reversing after finishing works as expected', function() {98 tick(90);99 var a = document.body.animate([], 1000);100 tick(100);101 tick(1200);102 assert.equal(a.playState, 'finished');103 assert.equal(a.startTime, 100);104 assert.equal(a.currentTime, 1000);105 tick(1500);106 assert.equal(a.currentTime, 1000);107 assert.equal(isTicking(), false);108 a.reverse();109 assert.equal(a._startTime, null);110 assert.equal(a.currentTime, 1000);111 tick(1600);112 assert.equal(a.startTime, 2600);113 assert.equal(a.currentTime, 1000);114 });115 test('playing after finishing works as expected', function() {116 tick(90);117 var a = document.body.animate([], 1000);118 tick(100);119 tick(1200);120 assert.equal(a.playState, 'finished');121 assert.equal(a.startTime, 100);122 assert.equal(a.currentTime, 1000);123 tick(1500);124 assert.equal(a.currentTime, 1000);125 assert.equal(isTicking(), false);126 a.play();127 assert.equal(a.startTime, null);128 assert.equal(a.currentTime, 0);129 tick(1600);130 assert.equal(a.startTime, 1600);131 assert.equal(a.currentTime, 0);132 });133 test('limiting works as expected', function() {134 tick(390);135 var a = document.body.animate([], 1000);136 tick(400);137 assert.equal(a.startTime, 400);138 assert.equal(a.currentTime, 0);139 tick(900);140 assert.equal(a.startTime, 400);141 assert.equal(a.currentTime, 500);142 tick(1400);143 assert.equal(a.startTime, 400);144 assert.equal(a.currentTime, 1000);145 tick(1500);146 assert.equal(a.startTime, 400);147 assert.equal(a.currentTime, 1000);148 a.reverse();149 assert.equal(a.playbackRate, -1);150 assert.equal(a.currentTime, 1000);151 assert.equal(a._startTime, null);152 tick(2000);153 assert.equal(a.currentTime, 1000);154 assert.equal(a.startTime, 3000);155 tick(2200);156 assert.equal(a.currentTime, 800);157 assert.equal(a.startTime, 3000);158 tick(3200);159 assert.equal(a.currentTime, 0);160 assert.equal(a.startTime, 3000);161 tick(3500);162 assert.equal(a.currentTime, 0);163 assert.equal(a.startTime, 3000);164 });165 test('play after limit works as expected', function() {166 tick(490);167 var a = document.body.animate([], 2000);168 tick(500);169 tick(2600);170 assert.equal(a.currentTime, 2000);171 assert.equal(a.startTime, 500);172 assert.equal(a.playState, 'finished');173 assert.equal(a.playbackRate, 1);174 setTicking(true);175 a.play();176 tick(2700);177 assert.equal(a.startTime, 2700);178 assert.equal(a.currentTime, 0);179 assert.notEqual(a.playState, 'finished');180 assert.equal(a.playbackRate, 1);181 });182 test('play after limit works as expected (reversed)', function() {183 tick(590);184 var a = document.body.animate([], 3000);185 tick(600);186 tick(700);187 a.reverse();188 tick(701);189 tick(900);190 assert.equal(a.startTime, 801);191 assert.equal(a.currentTime, 0);192 assert.equal(a.playState, 'finished');193 assert.equal(a.playbackRate, -1);194 setTicking(true);195 a.play();196 tick(1000);197 assert.equal(a.startTime, 4000);198 assert.equal(a.currentTime, 3000);199 assert.notEqual(a.playState, 'finished');200 assert.equal(a.playbackRate, -1);201 });202 test('seeking works as expected', function() {203 tick(690);204 var a = document.body.animate([], 2000);205 tick(700);206 tick(900);207 assert.equal(a.currentTime, 200);208 a.currentTime = 600;209 assert.equal(a.currentTime, 600);210 assert.equal(a.startTime, 300);211 a.reverse();212 tick(1000);213 assert.equal(a.startTime, 1600);214 a.currentTime = 300;215 assert.equal(a.currentTime, 300);216 assert.equal(a.startTime, 1300);217 });218 test('seeking while paused works as expected', function() {219 tick(790);220 var a = document.body.animate([], 1000);221 tick(800);222 tick(1000);223 a.pause();224 assert.equal(a.currentTime, null);225 assert.equal(a.startTime, null);226 assert.equal(a._paused, true);227 a.currentTime = 500;228 assert.equal(a.startTime, null);229 assert.equal(a._paused, true);230 });231 test('setting start time while paused is ignored', function() {232 tick(900);233 var a = document.body.animate([], 1234);234 a.pause();235 assert.equal(a.startTime, null);236 assert.equal(a.currentTime, null);237 a.startTime = 2232;238 assert.equal(a.startTime, null);239 assert.equal(a.currentTime, null);240 });241 test('setting playbackRate sets startTime to null unless the playbackRate is not changing, ' +242 'preserves the current time', function() {243 tick(0);244 var a = document.body.animate([], 1000);245 tick(1);246 tick(11);247 assert.equal(a.currentTime, 10);248 a.playbackRate = 2;249 assert.equal(a.playbackRate, 2);250 assert.equal(a.currentTime, 10);251 assert.equal(a.startTime, null);252 tick(12);253 assert.equal(a.currentTime, 10);254 assert.equal(a.startTime, 7);255 tick(22);256 assert.equal(a.currentTime, 30);257 assert.equal(a.startTime, 7);258 a.playbackRate = -1;259 assert.equal(a.playbackRate, -1);260 assert.equal(a.currentTime, 30);261 assert.equal(a.startTime, null);262 tick(23);263 assert.equal(a.currentTime, 30);264 assert.equal(a.startTime, 53);265 tick(33);266 assert.equal(a.currentTime, 20);267 assert.equal(a.startTime, 53);268 a.playbackRate = -1;269 assert.equal(a.playbackRate, -1);270 assert.equal(a.currentTime, 20);271 assert.equal(a.startTime, 53);272 tick(43);273 assert.equal(a.currentTime, 10);274 assert.equal(a.startTime, 53);275 }276 );277 test('setting playbackRate puts animation back into effect if it is not finished', function() {278 tick(0);279 var a = document.body.animate([], 1000);280 assert.equal(a.playbackRate, 1);281 tick(1);282 tick(1002);283 assert.equal(a.currentTime, 1000);284 a.playbackRate = -1;285 assert.equal(a.playbackRate, -1);286 assert.equal(a.currentTime, 1000);287 tick(1003);288 assert.equal(a.currentTime, 1000);289 tick(1503);290 assert.equal(a.currentTime, 500);291 });292 test('setting playbackRate does not put animation back into effect if it is finished', function() {293 tick(0);294 var a = document.body.animate([], 1000);295 assert.equal(a.playbackRate, 1);296 tick(1);297 tick(1002);298 assert.equal(a.currentTime, 1000);299 assert.equal(a.startTime, 1);300 a.playbackRate = 0.5;301 assert.equal(a.playbackRate, 0.5);302 assert.equal(a.currentTime, 1000);303 assert.equal(a.startTime, null);304 tick(1003);305 assert.equal(a.currentTime, 1000);306 assert.equal(a.startTime, -997);307 tick(1503);308 assert.equal(a.currentTime, 1000);309 assert.equal(a.startTime, -997);310 });311 test('finishing works as expected', function() {312 tick(1000);313 var a = document.body.animate([], 2000);314 a.finish();315 assert.equal(a.startTime, 0);316 assert.equal(a.currentTime, 2000);317 a.reverse();318 a.finish();319 assert.equal(a.currentTime, 0);320 assert.equal(a.startTime, 2000);321 tick(2000);322 });323 test('cancelling clears all effects', function() {324 tick(0);325 var target = document.createElement('div');326 document.documentElement.appendChild(target);327 var animation = target.animate([{marginLeft: '50px'}, {marginLeft: '50px'}], 1000);328 tick(10);329 tick(110);330 assert.equal(getComputedStyle(target).marginLeft, '50px');331 animation.cancel();332 tick(110);333 assert.equal(getComputedStyle(target).marginLeft, '0px');334 assert.deepEqual(webAnimations1.timeline._animations, []);335 tick(120);336 assert.equal(getComputedStyle(target).marginLeft, '0px');337 assert.deepEqual(webAnimations1.timeline._animations, []);338 document.documentElement.removeChild(target);339 });340 test('cancelling a newly created animation clears all effects', function() {341 tick(0);342 var target = document.createElement('div');343 document.documentElement.appendChild(target);344 var animation = target.animate([{marginLeft: '50px'}, {marginLeft: '50px'}], 1000);345 assert.equal(getComputedStyle(target).marginLeft, '50px');346 animation.cancel();347 assert.equal(getComputedStyle(target).marginLeft, '0px');348 document.documentElement.removeChild(target);349 });350 test('startTime is set on first tick if timeline hasn\'t started', function() {351 webAnimations1.timeline.currentTime = undefined;352 var a = document.body.animate([], 1000);353 tick(0);354 tick(100);355 assert.equal(a.startTime, 0);356 });357 test('animations which are finished and not filling get discarded', function() {358 tick(90);359 var nofill = document.body.animate([], 100);360 var fill = document.body.animate([], {duration: 100, fill: 'forwards'});361 assert.deepEqual(webAnimations1.timeline._animations, [nofill._animation || nofill, fill._animation || fill]);362 tick(100);363 assert.deepEqual(webAnimations1.timeline._animations, [nofill._animation || nofill, fill._animation || fill]);364 tick(400);365 assert.deepEqual(webAnimations1.timeline._animations, [fill._animation || fill]);366 });367 test('discarded animations get re-added on modification', function() {368 tick(90);369 var animation = document.body.animate([], 100);370 tick(100);371 tick(400);372 assert.deepEqual(webAnimations1.timeline._animations, []);373 animation.currentTime = 0;374 assert.deepEqual(webAnimations1.timeline._animations, [animation._animation || animation]);375 });376 test('animations in the before phase are not discarded', function() {377 tick(100);378 var animation = document.body.animate([], 100);379 animation.currentTime = -50;380 tick(110);381 assert.deepEqual(webAnimations1.timeline._animations, [animation._animation || animation]);382 });383 test('animations that go out of effect should not clear the effect of animations that are in effect', function() {384 var target = document.createElement('div');385 document.body.appendChild(target);386 tick(0);387 var animationBehind = target.animate([{marginLeft: '200px'}, {marginLeft: '200px'}], 200);388 var animationInfront = target.animate([{marginLeft: '100px'}, {marginLeft: '100px'}], 100);389 tick(50);390 assert.equal(getComputedStyle(target).marginLeft, '100px', 't = 50');391 tick(150);392 assert.equal(getComputedStyle(target).marginLeft, '200px', 't = 150');393 tick(250);394 assert.equal(getComputedStyle(target).marginLeft, '0px', 't = 250');395 document.body.removeChild(target);396 });397 test('animation modifications should update CSS effects immediately', function() {398 var target = document.createElement('div');399 document.body.appendChild(target);400 tick(0);401 var animationBehind = target.animate([{width: '1234px'}, {width: '1234px'}], {duration: 1, fill: 'both'});402 var animationInfront = target.animate([{width: '0px'}, {width: '100px'}], 100);403 assert.equal(getComputedStyle(target).width, '0px');404 animationInfront.currentTime = 50;405 assert.equal(getComputedStyle(target).width, '50px');406 animationInfront.currentTime = 100;407 assert.equal(getComputedStyle(target).width, '1234px');408 animationInfront.play();409 assert.equal(getComputedStyle(target).width, '0px');410 animationInfront.startTime = -50;411 assert.equal(getComputedStyle(target).width, '50px');412 document.body.removeChild(target);413 });414 test('KeyframeEffect that hasn\'t been played has playState \'idle\'', function() {415 var effect = new webAnimations1KeyframeEffect(document.body, [], 1000);416 var a = new webAnimations1Animation(effect);417 assert.equal(a.playState, 'idle');418 });419 test('playState works for a simple effect', function() {420 var a = document.body.animate([], 1000);421 tick(0);422 assert.equal(a.playState, 'running');423 tick(100);424 assert.equal(a.playState, 'running');425 a.pause();426 assert.equal(a.playState, 'pending');427 tick(101);428 assert.equal(a.playState, 'paused');429 a.play();430 assert.equal(a.playState, 'pending');431 tick(102);432 assert.equal(a.playState, 'running');433 tick(1002);434 assert.equal(a.playState, 'finished');435 });436 test('Play after cancel', function() {437 var a = document.body.animate([], 1000);438 assert.equal(a.playState, 'pending');439 tick(0);440 a.cancel();441 assert.equal(a.playState, 'idle');442 assert.equal(a.currentTime, null);443 assert.equal(a.startTime, null);444 tick(1);445 assert.equal(a.playState, 'idle');446 assert.equal(a.currentTime, null);447 assert.equal(a.startTime, null);448 a.play();449 assert.equal(a.playState, 'pending');450 assert.equal(a.currentTime, 0);451 assert.equal(a.startTime, null);452 tick(10);453 assert.equal(a.playState, 'running');454 assert.equal(a.currentTime, 0);455 assert.equal(a.startTime, 10);456 });457 test('Reverse after cancel', function() {458 var a = document.body.animate([], 300);459 tick(0);460 a.cancel();461 assert.equal(a.playState, 'idle');462 assert.equal(a.currentTime, null);463 assert.equal(a.startTime, null);464 tick(1);465 a.reverse();466 assert.equal(a.playState, 'pending');467 assert.equal(a.currentTime, 300);468 assert.equal(a.startTime, null);469 tick(100);470 assert.equal(a.playState, 'running');471 assert.equal(a.currentTime, 300);472 assert.equal(a.startTime, 400);473 tick(300);474 assert.equal(a.playState, 'running');475 assert.equal(a.currentTime, 100);476 assert.equal(a.startTime, 400);477 tick(400);478 assert.equal(a.playState, 'finished');479 assert.equal(a.currentTime, 0);480 assert.equal(a.startTime, 400);481 });482 test('Finish after cancel', function() {483 var a = document.body.animate([], 300);484 tick(0);485 a.cancel();486 assert.equal(a.playState, 'idle');487 assert.equal(a.currentTime, null);488 assert.equal(a.startTime, null);489 tick(1);490 a.finish();491 assert.equal(a.playState, 'idle');492 assert.equal(a.currentTime, null);493 assert.equal(a.startTime, null);494 tick(2);495 assert.equal(a.playState, 'idle');496 assert.equal(a.currentTime, null);497 assert.equal(a.startTime, null);498 });499 test('Pause after cancel', function() {500 var a = document.body.animate([], 300);501 tick(0);502 a.cancel();503 assert.equal(a.playState, 'idle');504 assert.equal(a.currentTime, null);505 assert.equal(a.startTime, null);506 tick(1);507 a.pause();508 assert.equal(a.playState, 'paused');509 assert.equal(a.currentTime, 0);510 assert.equal(a.startTime, null);511 });512 test('Animations ignore NaN times', function() {513 var a = document.body.animate([], 300);514 a.startTime = 100;515 tick(110);516 assert.equal(a.currentTime, 10);517 a.startTime = NaN;518 assert.equal(a.startTime, 100);519 a.currentTime = undefined;520 assert.equal(a.currentTime, 10);521 });522 test('play() should not set a start time', function() {523 var a = document.body.animate([], 1000);524 a.cancel();525 assert.equal(a.startTime, null);526 assert.equal(a.playState, 'idle');527 a.play();528 assert.equal(a.startTime, null);529 assert.equal(a.playState, 'pending');530 });531 test('reverse() should not set a start time', function() {532 var a = document.body.animate([], 1000);533 a.cancel();534 assert.equal(a.startTime, null);535 assert.equal(a.playState, 'idle');536 a.reverse();537 assert.equal(a.startTime, null);538 assert.equal(a.playState, 'pending');539 });540 test('Animations have optional ID', function() {541 tick(100);542 var a = document.body.animate([], { duration: 1000 });543 assert.equal(a.id, '');544 a = document.body.animate([], { duration: 1000, id: 'anim-id' });545 assert.equal(a.id, 'anim-id');546 });...

Full Screen

Full Screen

ClockSpec.js

Source:ClockSpec.js Github

copy

Full Screen

1/*global defineSuite*/2defineSuite([3 'Core/Clock',4 'Core/ClockRange',5 'Core/ClockStep',6 'Core/JulianDate',7 'Specs/pollToPromise'8 ], function(9 Clock,10 ClockRange,11 ClockStep,12 JulianDate,13 pollToPromise) {14 "use strict";15 /*global jasmine,describe,xdescribe,it,xit,expect,beforeEach,afterEach,beforeAll,afterAll,spyOn*/16 it('constructor sets default parameters', function() {17 var clock = new Clock();18 expect(clock.stopTime).toEqual(JulianDate.addDays(clock.startTime, 1, new JulianDate()));19 expect(clock.startTime).toEqual(clock.currentTime);20 expect(clock.clockStep).toEqual(ClockStep.SYSTEM_CLOCK_MULTIPLIER);21 expect(clock.clockRange).toEqual(ClockRange.UNBOUNDED);22 expect(clock.multiplier).toEqual(1.0);23 });24 it('constructor sets provided parameters correctly', function() {25 var start = new JulianDate(12);26 var stop = new JulianDate(112);27 var currentTime = new JulianDate(13);28 var step = ClockStep.TICK_DEPENDENT;29 var range = ClockRange.LOOP_STOP;30 var multiplier = 1.5;31 var clock = new Clock({32 currentTime : currentTime,33 clockStep : step,34 multiplier : multiplier,35 startTime : start,36 stopTime : stop,37 clockRange : range38 });39 expect(clock.startTime).toEqual(start);40 expect(clock.stopTime).toEqual(stop);41 expect(clock.currentTime).toEqual(currentTime);42 expect(clock.clockStep).toEqual(step);43 expect(clock.clockRange).toEqual(range);44 expect(clock.multiplier).toEqual(multiplier);45 });46 it('constructor works with no currentTime parameter', function() {47 var start = new JulianDate(12);48 var stop = new JulianDate(112);49 var currentTime = new JulianDate(12);50 var step = ClockStep.TICK_DEPENDENT;51 var range = ClockRange.LOOP_STOP;52 var multiplier = 1.5;53 var clock = new Clock({54 clockStep : step,55 multiplier : multiplier,56 startTime : start,57 stopTime : stop,58 clockRange : range59 });60 expect(clock.startTime).toEqual(start);61 expect(clock.stopTime).toEqual(stop);62 expect(clock.currentTime).toEqual(currentTime);63 expect(clock.clockStep).toEqual(step);64 expect(clock.clockRange).toEqual(range);65 expect(clock.multiplier).toEqual(multiplier);66 });67 it('constructor works with no startTime parameter', function() {68 var stop = new JulianDate(112);69 var currentTime = new JulianDate(13);70 var step = ClockStep.TICK_DEPENDENT;71 var range = ClockRange.LOOP_STOP;72 var multiplier = 1.5;73 var clock = new Clock({74 currentTime : currentTime,75 clockStep : step,76 multiplier : multiplier,77 stopTime : stop,78 clockRange : range79 });80 expect(clock.startTime).toEqual(clock.currentTime);81 expect(clock.stopTime).toEqual(stop);82 expect(clock.currentTime).toEqual(currentTime);83 expect(clock.clockStep).toEqual(step);84 expect(clock.clockRange).toEqual(range);85 expect(clock.multiplier).toEqual(multiplier);86 });87 it('constructor works with no start or stop time', function() {88 var start = new JulianDate(12);89 var stop = new JulianDate(13);90 var currentTime = new JulianDate(12);91 var step = ClockStep.TICK_DEPENDENT;92 var range = ClockRange.LOOP_STOP;93 var multiplier = 1.5;94 var clock = new Clock({95 currentTime : currentTime,96 clockStep : step,97 multiplier : multiplier,98 clockRange : range99 });100 expect(clock.startTime).toEqual(start);101 expect(clock.stopTime).toEqual(stop);102 expect(clock.currentTime).toEqual(currentTime);103 expect(clock.clockStep).toEqual(step);104 expect(clock.clockRange).toEqual(range);105 expect(clock.multiplier).toEqual(multiplier);106 });107 it('constructor works with no start or current time', function() {108 var start = new JulianDate(12);109 var stop = new JulianDate(13);110 var currentTime = new JulianDate(12);111 var step = ClockStep.TICK_DEPENDENT;112 var range = ClockRange.LOOP_STOP;113 var multiplier = 1.5;114 var clock = new Clock({115 clockStep : step,116 multiplier : multiplier,117 stopTime : stop,118 clockRange : range119 });120 expect(clock.startTime).toEqual(start);121 expect(clock.stopTime).toEqual(stop);122 expect(clock.currentTime).toEqual(currentTime);123 expect(clock.clockStep).toEqual(step);124 expect(clock.clockRange).toEqual(range);125 expect(clock.multiplier).toEqual(multiplier);126 });127 it('constructor works with no current or stop time', function() {128 var start = new JulianDate(12);129 var stop = new JulianDate(13);130 var currentTime = new JulianDate(12);131 var step = ClockStep.TICK_DEPENDENT;132 var range = ClockRange.LOOP_STOP;133 var multiplier = 1.5;134 var clock = new Clock({135 clockStep : step,136 multiplier : multiplier,137 startTime : start,138 clockRange : range139 });140 expect(clock.startTime).toEqual(start);141 expect(clock.stopTime).toEqual(stop);142 expect(clock.currentTime).toEqual(currentTime);143 expect(clock.clockStep).toEqual(step);144 expect(clock.clockRange).toEqual(range);145 expect(clock.multiplier).toEqual(multiplier);146 });147 it('constructor works with no stopTime parameter', function() {148 var start = new JulianDate(12);149 var stop = new JulianDate(13);150 var currentTime = new JulianDate(12);151 var step = ClockStep.TICK_DEPENDENT;152 var range = ClockRange.LOOP_STOP;153 var multiplier = 1.5;154 var clock = new Clock({155 currentTime : currentTime,156 clockStep : step,157 multiplier : multiplier,158 startTime : start,159 clockRange : range160 });161 expect(clock.startTime).toEqual(start);162 expect(clock.stopTime).toEqual(stop);163 expect(clock.currentTime).toEqual(currentTime);164 expect(clock.clockStep).toEqual(step);165 expect(clock.clockRange).toEqual(range);166 expect(clock.multiplier).toEqual(multiplier);167 });168 it('Tick dependant clock step works animating forward.', function() {169 var start = new JulianDate(0);170 var stop = new JulianDate(1);171 var currentTime = new JulianDate(0.5);172 var step = ClockStep.TICK_DEPENDENT;173 var range = ClockRange.LOOP_STOP;174 var multiplier = 1.5;175 var clock = new Clock({176 currentTime : currentTime,177 clockStep : step,178 multiplier : multiplier,179 startTime : start,180 stopTime : stop,181 clockRange : range182 });183 expect(clock.currentTime).toEqual(currentTime);184 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());185 expect(currentTime).toEqual(clock.tick());186 expect(clock.currentTime).toEqual(currentTime);187 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());188 expect(currentTime).toEqual(clock.tick());189 expect(clock.currentTime).toEqual(currentTime);190 });191 it('Tick dependant clock step works animating backwards.', function() {192 var start = new JulianDate(0);193 var stop = new JulianDate(1);194 var currentTime = new JulianDate(0.5);195 var step = ClockStep.TICK_DEPENDENT;196 var range = ClockRange.LOOP_STOP;197 var multiplier = -1.5;198 var clock = new Clock({199 currentTime : currentTime,200 clockStep : step,201 multiplier : multiplier,202 startTime : start,203 stopTime : stop,204 clockRange : range205 });206 expect(clock.currentTime).toEqual(currentTime);207 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());208 expect(currentTime).toEqual(clock.tick());209 expect(clock.currentTime).toEqual(currentTime);210 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());211 expect(currentTime).toEqual(clock.tick());212 expect(clock.currentTime).toEqual(currentTime);213 });214 it('Tick dependant clock step works unbounded animating forward.', function() {215 var start = new JulianDate(0);216 var stop = new JulianDate(1);217 var currentTime = new JulianDate(1);218 var step = ClockStep.TICK_DEPENDENT;219 var range = ClockRange.UNBOUNDED;220 var multiplier = 1.5;221 var clock = new Clock({222 currentTime : currentTime,223 clockStep : step,224 multiplier : multiplier,225 startTime : start,226 stopTime : stop,227 clockRange : range228 });229 expect(clock.currentTime).toEqual(currentTime);230 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());231 expect(currentTime).toEqual(clock.tick());232 expect(clock.currentTime).toEqual(currentTime);233 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());234 expect(currentTime).toEqual(clock.tick());235 expect(clock.currentTime).toEqual(currentTime);236 });237 it('Tick dependant clock step works unbounded animating backwards.', function() {238 var start = new JulianDate(0);239 var stop = new JulianDate(1);240 var currentTime = new JulianDate(0);241 var step = ClockStep.TICK_DEPENDENT;242 var range = ClockRange.UNBOUNDED;243 var multiplier = -1.5;244 var clock = new Clock({245 currentTime : currentTime,246 clockStep : step,247 multiplier : multiplier,248 startTime : start,249 stopTime : stop,250 clockRange : range251 });252 expect(clock.currentTime).toEqual(currentTime);253 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());254 expect(currentTime).toEqual(clock.tick());255 expect(clock.currentTime).toEqual(currentTime);256 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());257 expect(currentTime).toEqual(clock.tick());258 expect(clock.currentTime).toEqual(currentTime);259 });260 it('Tick dependant clock loops animating forward.', function() {261 var start = new JulianDate(0);262 var stop = new JulianDate(1);263 var currentTime = new JulianDate(1);264 var step = ClockStep.TICK_DEPENDENT;265 var range = ClockRange.LOOP_STOP;266 var multiplier = 1.5;267 var clock = new Clock({268 currentTime : currentTime,269 clockStep : step,270 multiplier : multiplier,271 startTime : start,272 stopTime : stop,273 clockRange : range274 });275 expect(clock.currentTime).toEqual(currentTime);276 currentTime = JulianDate.addSeconds(start, multiplier, new JulianDate());277 expect(currentTime).toEqual(clock.tick());278 expect(clock.currentTime).toEqual(currentTime);279 currentTime = JulianDate.addSeconds(currentTime, multiplier, new JulianDate());280 expect(currentTime).toEqual(clock.tick());281 expect(clock.currentTime).toEqual(currentTime);282 });283 it('Tick dependant clock step stops at start when animating backwards with ClockRange.LOOP_STOP.', function() {284 var start = new JulianDate(0);285 var stop = new JulianDate(1);286 var currentTime = new JulianDate(0);287 var step = ClockStep.TICK_DEPENDENT;288 var range = ClockRange.LOOP_STOP;289 var multiplier = -100.0;290 var clock = new Clock({291 currentTime : currentTime,292 clockStep : step,293 multiplier : multiplier,294 startTime : start,295 stopTime : stop,296 clockRange : range297 });298 expect(clock.currentTime).toEqual(currentTime);299 expect(start).toEqual(clock.tick());300 expect(start).toEqual(clock.currentTime);301 });302 it('Tick dependant clock step stops at end when animating forwards.', function() {303 var start = new JulianDate(0);304 var stop = new JulianDate(1);305 var currentTime = new JulianDate(1);306 var step = ClockStep.TICK_DEPENDENT;307 var range = ClockRange.CLAMPED;308 var multiplier = 100.0;309 var clock = new Clock({310 currentTime : currentTime,311 clockStep : step,312 multiplier : multiplier,313 startTime : start,314 stopTime : stop,315 clockRange : range316 });317 expect(clock.currentTime).toEqual(currentTime);318 expect(stop).toEqual(clock.tick());319 expect(stop).toEqual(clock.currentTime);320 });321 it('Ticks in real-time.', function() {322 //We can't numerically validate the real-time clock, but we323 //can at least make sure the code executes.324 var clock = new Clock({325 clockStep : ClockStep.SYSTEM_CLOCK326 });327 var time1 = JulianDate.clone(clock.tick());328 return pollToPromise(function() {329 var time2 = clock.tick();330 return JulianDate.greaterThan(time2, time1);331 });332 });333 it('Tick dependant clock step stops at start animating backwards.', function() {334 var start = new JulianDate(0);335 var stop = new JulianDate(1);336 var currentTime = new JulianDate(0);337 var step = ClockStep.TICK_DEPENDENT;338 var range = ClockRange.CLAMPED;339 var multiplier = -100.0;340 var clock = new Clock({341 currentTime : currentTime,342 clockStep : step,343 multiplier : multiplier,344 startTime : start,345 stopTime : stop,346 clockRange : range347 });348 expect(clock.currentTime).toEqual(currentTime);349 expect(start).toEqual(clock.tick());350 expect(start).toEqual(clock.currentTime);351 });352 it('throws if start time is after stop time.', function() {353 var start = new JulianDate(1);354 var stop = new JulianDate(0);355 expect(function() {356 return new Clock({357 startTime : start,358 stopTime : stop359 });360 }).toThrowDeveloperError();361 });362 it('system clock multiplier clock step works fine', function() {363 var clock = new Clock({364 clockStep : ClockStep.SYSTEM_CLOCK_MULTIPLIER365 });366 var time1 = JulianDate.clone(clock.tick());367 return pollToPromise(function() {368 var time2 = clock.tick();369 return JulianDate.greaterThan(time2, time1);370 });371 });372 it('clock does not advance if shouldAnimate is false and advances if true', function() {373 var clock = new Clock();374 var time1;375 var time2;376 clock.clockStep = ClockStep.SYSTEM_CLOCK_MULTIPLIER;377 var currentTime = clock.currentTime;378 clock.shouldAnimate = false;379 expect(currentTime).toEqual(clock.tick());380 expect(clock.currentTime).toEqual(currentTime);381 clock.shouldAnimate = true;382 time1 = JulianDate.clone(clock.tick());383 return pollToPromise(function() {384 time2 = clock.tick();385 return JulianDate.greaterThan(time2, time1);386 }).then(function() {387 clock.clockStep = ClockStep.SYSTEM_CLOCK;388 currentTime = clock.currentTime;389 clock.shouldAnimate = false;390 expect(currentTime).toEqual(clock.tick());391 expect(clock.currentTime).toEqual(currentTime);392 clock.shouldAnimate = true;393 time1 = JulianDate.clone(clock.tick());394 return pollToPromise(function() {395 time2 = clock.tick();396 return JulianDate.greaterThan(time2, time1);397 }).then(function() {398 clock.clockStep = ClockStep.TICK_DEPENDENT;399 currentTime = JulianDate.clone(clock.currentTime);400 clock.shouldAnimate = false;401 expect(currentTime).toEqual(clock.tick());402 expect(clock.currentTime).toEqual(currentTime);403 clock.shouldAnimate = true;404 expect(JulianDate.greaterThan(clock.tick(), currentTime)).toEqual(true);405 });406 });407 });...

Full Screen

Full Screen

player.js

Source:player.js Github

copy

Full Screen

1suite('player', function() {2 setup(function() {3 webAnimationsMinifill.timeline._players = [];4 });5 test('zero duration animation works', function() {6 tick(90);7 var p = document.body.animate([], 0);8 tick(100);9 assert.equal(p.startTime, 100);10 assert.equal(p.currentTime, 0);11 });12 test('playing works as expected', function() {13 tick(90);14 var p = document.body.animate([], 2000);15 tick(100);16 assert.equal(p.startTime, 100);17 assert.equal(p.currentTime, 0);18 tick(300);19 assert.equal(p.startTime, 100);20 assert.equal(p.currentTime, 200);21 });22 test('pause at start of play', function() {23 tick(90);24 var p = document.body.animate([], 2000);25 p.pause();26 tick(100);27 assert.equal(p.currentTime, 0);28 tick(300);29 p.play();30 assert.equal(p.currentTime, 0);31 tick(310);32 assert.equal(p.currentTime, 0);33 assert.equal(p.startTime, 310);34 var p = document.body.animate([], 2000);35 p.startTime = -690;36 p.pause();37 assert.equal(p.currentTime, null);38 tick(700);39 p.play();40 tick(701);41 assert.equal(p.currentTime, 1000);42 tick(800);43 assert.equal(p.currentTime, 1099);44 assert.equal(p.startTime, -299);45 });46 test('pausing works as expected', function() {47 tick(190);48 var p = document.body.animate([], 3000);49 tick(200);50 tick(1500);51 assert.equal(p.startTime, 200);52 assert.equal(p.currentTime, 1300);53 p.pause();54 assert.equal(p.startTime, null);55 assert.equal(p.currentTime, null);56 tick(2500);57 assert.equal(p.startTime, null);58 assert.equal(p.currentTime, 1300);59 p.play();60 tick(2510);61 assert.equal(p.startTime, 1210);62 assert.equal(p.currentTime, 1300);63 tick(3500);64 assert.equal(p.startTime, 1210);65 assert.equal(p.currentTime, 2290);66 });67 test('reversing works as expected', function() {68 tick(290);69 var p = document.body.animate([], 1000);70 tick(300);71 assert.equal(p.startTime, 300);72 assert.equal(p.currentTime, 0);73 tick(600);74 assert.equal(p.startTime, 300);75 assert.equal(p.currentTime, 300);76 assert.equal(p.playbackRate, 1);77 p.reverse();78 tick(600);79 assert.equal(p.startTime, 900);80 assert.equal(p.currentTime, 300);81 assert.equal(p.playbackRate, -1);82 tick(700);83 assert.equal(p.startTime, 900);84 assert.equal(p.currentTime, 200);85 });86 test('reversing after pausing', function() {87 tick(90);88 var p = document.body.animate([], 1000);89 tick(100);90 tick(600);91 p.reverse();92 tick(601);93 tick(700);94 assert.equal(p.startTime, 1101);95 assert.equal(p.currentTime, 401);96 });97 test('reversing after finishing works as expected', function() {98 tick(90);99 var p = document.body.animate([], 1000);100 tick(100);101 tick(1200);102 assert.equal(p.finished, true);103 assert.equal(p.startTime, 100);104 assert.equal(p.currentTime, 1000);105 tick(1500);106 assert.equal(p.currentTime, 1000);107 assert.equal(isTicking(), false);108 p.reverse();109 assert.equal(p._startTime, null);110 assert.equal(p.currentTime, 1000);111 tick(1600);112 assert.equal(p.startTime, 2600);113 assert.equal(p.currentTime, 1000);114 });115 test('playing after finishing works as expected', function() {116 tick(90);117 var p = document.body.animate([], 1000);118 tick(100);119 tick(1200);120 assert.equal(p.finished, true);121 assert.equal(p.startTime, 100);122 assert.equal(p.currentTime, 1000);123 tick(1500);124 assert.equal(p.currentTime, 1000);125 assert.equal(isTicking(), false);126 p.play();127 assert.equal(p.startTime, null);128 assert.equal(p.currentTime, 0);129 tick(1600);130 assert.equal(p.startTime, 1600);131 assert.equal(p.currentTime, 0);132 });133 test('limiting works as expected', function() {134 tick(390);135 var p = document.body.animate([], 1000);136 tick(400);137 assert.equal(p.startTime, 400);138 assert.equal(p.currentTime, 0);139 tick(900);140 assert.equal(p.startTime, 400);141 assert.equal(p.currentTime, 500);142 tick(1400);143 assert.equal(p.startTime, 400);144 assert.equal(p.currentTime, 1000);145 tick(1500);146 assert.equal(p.startTime, 400);147 assert.equal(p.currentTime, 1000);148 p.reverse();149 assert.equal(p.playbackRate, -1);150 assert.equal(p.currentTime, 1000);151 assert.equal(p._startTime, null);152 tick(2000);153 assert.equal(p.currentTime, 1000);154 assert.equal(p.startTime, 3000);155 tick(2200);156 assert.equal(p.currentTime, 800);157 assert.equal(p.startTime, 3000);158 tick(3200);159 assert.equal(p.currentTime, 0);160 assert.equal(p.startTime, 3000);161 tick(3500);162 assert.equal(p.currentTime, 0);163 assert.equal(p.startTime, 3000);164 });165 test('play after limit works as expected', function() {166 tick(490);167 var p = document.body.animate([], 2000);168 tick(500);169 tick(2600);170 assert.equal(p.currentTime, 2000);171 assert.equal(p.startTime, 500);172 assert.equal(p.finished, true);173 assert.equal(p.playbackRate, 1);174 setTicking(true);175 p.play();176 tick(2700);177 assert.equal(p.startTime, 2700);178 assert.equal(p.currentTime, 0);179 assert.equal(p.finished, false);180 assert.equal(p.playbackRate, 1);181 });182 test('play after limit works as expected (reversed)', function() {183 tick(590);184 var p = document.body.animate([], 3000);185 tick(600);186 tick(700);187 p.reverse();188 tick(701);189 tick(900);190 assert.equal(p.startTime, 801);191 assert.equal(p.currentTime, 0);192 assert.equal(p.finished, true);193 assert.equal(p.playbackRate, -1);194 setTicking(true);195 p.play();196 tick(1000);197 assert.equal(p.startTime, 4000);198 assert.equal(p.currentTime, 3000);199 assert.equal(p.finished, false);200 assert.equal(p.playbackRate, -1);201 });202 test('seeking works as expected', function() {203 tick(690);204 var p = document.body.animate([], 2000);205 tick(700);206 tick(900);207 assert.equal(p.currentTime, 200);208 p.currentTime = 600;209 assert.equal(p.currentTime, 600);210 assert.equal(p.startTime, 300);211 p.reverse();212 tick(1000);213 assert.equal(p.startTime, 1600);214 p.currentTime = 300;215 assert.equal(p.currentTime, 300);216 assert.equal(p.startTime, 1300);217 });218 test('seeking while paused works as expected', function() {219 tick(790);220 var p = document.body.animate([], 1000);221 tick(800);222 tick(1000);223 p.pause();224 assert.equal(p.currentTime, null);225 assert.equal(p.startTime, null);226 assert.equal(p.paused, true);227 p.currentTime = 500;228 assert.equal(p.startTime, null);229 assert.equal(p.paused, true);230 });231 test('setting start time while paused is ignored', function() {232 tick(900);233 var p = document.body.animate([], 1234);234 p.pause();235 assert.equal(p.startTime, null);236 assert.equal(p.currentTime, null);237 p.startTime = 2232;238 assert.equal(p.startTime, null);239 assert.equal(p.currentTime, null);240 });241 test('finishing works as expected', function() {242 tick(1000);243 var p = document.body.animate([], 2000);244 p.finish();245 assert.equal(p.startTime, 0);246 assert.equal(p.currentTime, 2000);247 p.reverse();248 p.finish();249 assert.equal(p.currentTime, 0);250 assert.equal(p.startTime, 2000);251 tick(2000);252 });253 test('cancelling clears all effects', function() {254 tick(0);255 var target = document.createElement('div');256 document.documentElement.appendChild(target);257 var player = target.animate([{marginLeft: '50px'}, {marginLeft: '50px'}], 1000);258 tick(10);259 tick(110);260 assert.equal(getComputedStyle(target).marginLeft, '50px');261 player.cancel();262 // getComputedStyle forces a tick.263 assert.equal(getComputedStyle(target).marginLeft, '0px');264 assert.deepEqual(webAnimationsMinifill.timeline._players, []);265 tick(120);266 assert.equal(getComputedStyle(target).marginLeft, '0px');267 assert.deepEqual(webAnimationsMinifill.timeline._players, []);268 document.documentElement.removeChild(target);269 });270 test('startTime is set on first tick if timeline hasn\'t started', function() {271 webAnimationsMinifill.timeline.currentTime = undefined;272 var p = document.body.animate([], 1000);273 tick(0);274 tick(100);275 assert.equal(p.startTime, 0);276 });277 test('players which are finished and not filling get discarded', function() {278 tick(90);279 var nofill = document.body.animate([], 100);280 var fill = document.body.animate([], {duration: 100, fill: 'forwards'});281 assert.deepEqual(webAnimationsMinifill.timeline._players, [nofill._player || nofill, fill._player || fill]);282 tick(100);283 assert.deepEqual(webAnimationsMinifill.timeline._players, [nofill._player || nofill, fill._player || fill]);284 tick(400);285 assert.deepEqual(webAnimationsMinifill.timeline._players, [fill._player || fill]);286 });287 test('discarded players get re-added on modification', function() {288 tick(90);289 var player = document.body.animate([], 100);290 tick(100);291 tick(400);292 assert.deepEqual(webAnimationsMinifill.timeline._players, []);293 player.currentTime = 0;294 assert.deepEqual(webAnimationsMinifill.timeline._players, [player._player || player]);295 });296 test('players in the before phase are not discarded', function() {297 tick(100);298 var player = document.body.animate([], 100);299 player.currentTime = -50;300 tick(110);301 assert.deepEqual(webAnimationsMinifill.timeline._players, [player._player || player]);302 });303 test('players that go out of effect should not clear the effect of players that are in effect', function() {304 var target = document.createElement('div');305 document.body.appendChild(target);306 tick(0);307 var playerBehind = target.animate([{marginLeft: '200px'}, {marginLeft: '200px'}], 200);308 var playerInfront = target.animate([{marginLeft: '100px'}, {marginLeft: '100px'}], 100);309 tick(50);310 assert.equal(getComputedStyle(target).marginLeft, '100px', 't = 50');311 tick(150);312 assert.equal(getComputedStyle(target).marginLeft, '200px', 't = 150');313 tick(250);314 assert.equal(getComputedStyle(target).marginLeft, '0px', 't = 250');315 document.body.removeChild(target);316 });317 test('player modifications should update CSS effects immediately', function() {318 var target = document.createElement('div');319 document.body.appendChild(target);320 tick(0);321 var playerBehind = target.animate([{width: '1234px'}, {width: '1234px'}], {duration: 1, fill: 'both'});322 var playerInfront = target.animate([{width: '0px'}, {width: '100px'}], 100);323 assert.equal(getComputedStyle(target).width, '0px');324 playerInfront.currentTime = 50;325 assert.equal(getComputedStyle(target).width, '50px');326 playerInfront.currentTime = 100;327 assert.equal(getComputedStyle(target).width, '1234px');328 playerInfront.play();329 assert.equal(getComputedStyle(target).width, '0px');330 playerInfront.startTime = -50;331 assert.equal(getComputedStyle(target).width, '50px');332 document.body.removeChild(target);333 });334 test('Player that hasn\'t been played has playState \'idle\'', function() {335 var source = new minifillAnimation(document.body, [], 1000);336 var p = new Player(source);337 assert.equal(p.playState, 'idle');338 });339 test('playState works for a simple animation', function() {340 var p = document.body.animate([], 1000);341 tick(0);342 assert.equal(p.playState, 'running');343 tick(100);344 assert.equal(p.playState, 'running');345 p.pause();346 assert.equal(p.playState, 'pending');347 tick(101);348 assert.equal(p.playState, 'paused');349 p.play();350 assert.equal(p.playState, 'pending');351 tick(102);352 assert.equal(p.playState, 'running');353 tick(1002);354 assert.equal(p.playState, 'finished');355 });356 test('Play after cancel', function() {357 var p = document.body.animate([], 1000);358 assert.equal(p.playState, 'pending');359 tick(0);360 p.cancel();361 assert.equal(p.playState, 'idle');362 assert.equal(p.currentTime, null);363 assert.equal(p.startTime, null);364 tick(1);365 assert.equal(p.playState, 'idle');366 assert.equal(p.currentTime, null);367 assert.equal(p.startTime, null);368 p.play();369 assert.equal(p.playState, 'pending');370 assert.equal(p.currentTime, 0);371 assert.equal(p.startTime, null);372 tick(10);373 assert.equal(p.playState, 'running');374 assert.equal(p.currentTime, 0);375 assert.equal(p.startTime, 10);376 });377 test('Reverse after cancel', function() {378 var p = document.body.animate([], 300);379 tick(0);380 p.cancel();381 assert.equal(p.playState, 'idle');382 assert.equal(p.currentTime, null);383 assert.equal(p.startTime, null);384 tick(1);385 p.reverse();386 assert.equal(p.playState, 'pending');387 assert.equal(p.currentTime, 300);388 assert.equal(p.startTime, null);389 tick(100);390 assert.equal(p.playState, 'running');391 assert.equal(p.currentTime, 300);392 assert.equal(p.startTime, 400);393 tick(300);394 assert.equal(p.playState, 'running');395 assert.equal(p.currentTime, 100);396 assert.equal(p.startTime, 400);397 tick(400);398 assert.equal(p.playState, 'finished');399 assert.equal(p.currentTime, 0);400 assert.equal(p.startTime, 400);401 });402 test('Finish after cancel', function() {403 var p = document.body.animate([], 300);404 tick(0);405 p.cancel();406 assert.equal(p.playState, 'idle');407 assert.equal(p.currentTime, null);408 assert.equal(p.startTime, null);409 tick(1);410 p.finish();411 assert.equal(p.playState, 'idle');412 assert.equal(p.currentTime, null);413 assert.equal(p.startTime, null);414 tick(2);415 assert.equal(p.playState, 'idle');416 assert.equal(p.currentTime, null);417 assert.equal(p.startTime, null);418 });419 test('Pause after cancel', function() {420 var p = document.body.animate([], 300);421 tick(0);422 p.cancel();423 assert.equal(p.playState, 'idle');424 assert.equal(p.currentTime, null);425 assert.equal(p.startTime, null);426 tick(1);427 p.pause();428 assert.equal(p.playState, 'idle');429 assert.equal(p.currentTime, null);430 assert.equal(p.startTime, null);431 });432 test('Players ignore NaN times', function() {433 var p = document.body.animate([], 300);434 p.startTime = 100;435 tick(110);436 assert.equal(p.currentTime, 10);437 p.startTime = NaN;438 assert.equal(p.startTime, 100);439 p.currentTime = undefined;440 assert.equal(p.currentTime, 10);441 });442 test('play() should not set a start time', function() {443 var p = document.body.animate([], 1000);444 p.cancel();445 assert.equal(p.startTime, null);446 assert.equal(p.playState, 'idle');447 p.play();448 assert.equal(p.startTime, null);449 assert.equal(p.playState, 'pending');450 });451 test('reverse() should not set a start time', function() {452 var p = document.body.animate([], 1000);453 p.cancel();454 assert.equal(p.startTime, null);455 assert.equal(p.playState, 'idle');456 p.reverse();457 assert.equal(p.startTime, null);458 assert.equal(p.playState, 'pending');459 });...

Full Screen

Full Screen

Clock.js

Source:Clock.js Github

copy

Full Screen

1/*global define*/2define([3 './ClockRange',4 './ClockStep',5 './defaultValue',6 './defined',7 './DeveloperError',8 './Event',9 './getTimestamp',10 './JulianDate'11 ], function(12 ClockRange,13 ClockStep,14 defaultValue,15 defined,16 DeveloperError,17 Event,18 getTimestamp,19 JulianDate) {20 "use strict";21 /**22 * A simple clock for keeping track of simulated time.23 *24 * @alias Clock25 * @constructor26 *27 * @param {Object} options Object with the following properties:28 * @param {JulianDate} [options.startTime] The start time of the clock.29 * @param {JulianDate} [options.stopTime] The stop time of the clock.30 * @param {JulianDate} [options.currentTime] The current time.31 * @param {Number} [options.multiplier=1.0] Determines how much time advances when tick is called, negative values allow for advancing backwards.32 * @param {ClockStep} [options.clockStep=ClockStep.SYSTEM_CLOCK_MULTIPLIER] Determines if calls to <code>tick</code> are frame dependent or system clock dependent.33 * @param {ClockRange} [options.clockRange=ClockRange.UNBOUNDED] Determines how the clock should behave when <code>startTime</code> or <code>stopTime</code> is reached.34 * @param {Boolean} [options.canAnimate=true] Indicates whether tick can advance time. This could be false if data is being buffered, for example. The clock will only tick when both <code>canAnimate</code> and <code>shouldAnimate</code> are true.35 * @param {Boolean} [options.shouldAnimate=true] Indicates whether tick should attempt to advance time. The clock will only tick when both <code>canAnimate</code> and <code>shouldAnimate</code> are true.36 *37 * @exception {DeveloperError} startTime must come before stopTime.38 *39 * @see ClockStep40 * @see ClockRange41 * @see JulianDate42 *43 * @example44 * // Create a clock that loops on Christmas day 2013 and runs in real-time.45 * var clock = new Cesium.Clock({46 * startTime : Cesium.JulianDate.fromIso8601("2013-12-25"),47 * currentTime : Cesium.JulianDate.fromIso8601("2013-12-25"),48 * stopTime : Cesium.JulianDate.fromIso8601("2013-12-26"),49 * clockRange : Cesium.ClockRange.LOOP_STOP,50 * clockStep : Cesium.ClockStep.SYSTEM_CLOCK_MULTIPLIER51 * });52 */53 var Clock = function(options) {54 options = defaultValue(options, defaultValue.EMPTY_OBJECT);55 var startTime = options.startTime;56 var startTimeUndefined = !defined(startTime);57 var stopTime = options.stopTime;58 var stopTimeUndefined = !defined(stopTime);59 var currentTime = options.currentTime;60 var currentTimeUndefined = !defined(currentTime);61 if (startTimeUndefined && stopTimeUndefined && currentTimeUndefined) {62 currentTime = JulianDate.now();63 startTime = JulianDate.clone(currentTime);64 stopTime = JulianDate.addDays(currentTime, 1.0, new JulianDate());65 } else if (startTimeUndefined && stopTimeUndefined) {66 startTime = JulianDate.clone(currentTime);67 stopTime = JulianDate.addDays(currentTime, 1.0, new JulianDate());68 } else if (startTimeUndefined && currentTimeUndefined) {69 startTime = JulianDate.addDays(stopTime, -1.0, new JulianDate());70 currentTime = JulianDate.clone(startTime);71 } else if (currentTimeUndefined && stopTimeUndefined) {72 currentTime = JulianDate.clone(startTime);73 stopTime = JulianDate.addDays(startTime, 1.0, new JulianDate());74 } else if (currentTimeUndefined) {75 currentTime = JulianDate.clone(startTime);76 } else if (stopTimeUndefined) {77 stopTime = JulianDate.addDays(currentTime, 1.0, new JulianDate());78 } else if (startTimeUndefined) {79 startTime = JulianDate.clone(currentTime);80 }81 //>>includeStart('debug', pragmas.debug);82 if (JulianDate.greaterThan(startTime, stopTime)) {83 throw new DeveloperError('startTime must come before stopTime.');84 }85 //>>includeEnd('debug');86 /**87 * The start time of the clock.88 * @type {JulianDate}89 */90 this.startTime = startTime;91 /**92 * The stop time of the clock.93 * @type {JulianDate}94 */95 this.stopTime = stopTime;96 /**97 * The current time.98 * @type {JulianDate}99 */100 this.currentTime = currentTime;101 /**102 * Determines how much time advances when tick is called, negative values allow for advancing backwards.103 * If <code>clockStep</code> is set to ClockStep.TICK_DEPENDENT this is the number of seconds to advance.104 * If <code>clockStep</code> is set to ClockStep.SYSTEM_CLOCK_MULTIPLIER this value is multiplied by the105 * elapsed system time since the last call to tick.106 * @type {Number}107 * @default 1.0108 */109 this.multiplier = defaultValue(options.multiplier, 1.0);110 /**111 * Determines if calls to <code>tick</code> are frame dependent or system clock dependent.112 * @type ClockStep113 * @default {@link ClockStep.SYSTEM_CLOCK_MULTIPLIER}114 */115 this.clockStep = defaultValue(options.clockStep, ClockStep.SYSTEM_CLOCK_MULTIPLIER);116 /**117 * Determines how the clock should behave when <code>startTime</code> or <code>stopTime</code> is reached.118 * @type {ClockRange}119 * @default {@link ClockRange.UNBOUNDED}120 */121 this.clockRange = defaultValue(options.clockRange, ClockRange.UNBOUNDED);122 /**123 * Indicates whether tick can advance time. This could be false if data is being buffered,124 * for example. The clock will only tick when both <code>canAnimate</code> and <code>shouldAnimate</code> are true.125 * @type {Boolean}126 * @default true127 */128 this.canAnimate = defaultValue(options.canAnimate, true);129 /**130 * Indicates whether tick should attempt to advance time.131 * The clock will only tick when both <code>canAnimate</code> and <code>shouldAnimate</code> are true.132 * @type {Boolean}133 * @default true134 */135 this.shouldAnimate = defaultValue(options.shouldAnimate, true);136 /**137 * An {@link Event} that is fired whenever <code>tick</code>.138 */139 this.onTick = new Event();140 this._lastSystemTime = getTimestamp();141 };142 /**143 * Advances the clock from the currentTime based on the current configuration options.144 * tick should be called every frame, regardless of whether animation is taking place145 * or not. To control animation, use the <code>shouldAnimate</code> property.146 *147 * @returns {JulianDate} The new value of the <code>currentTime</code> property.148 */149 Clock.prototype.tick = function() {150 var currentSystemTime = getTimestamp();151 var currentTime = JulianDate.clone(this.currentTime);152 var startTime = this.startTime;153 var stopTime = this.stopTime;154 var multiplier = this.multiplier;155 if (this.canAnimate && this.shouldAnimate) {156 if (this.clockStep === ClockStep.SYSTEM_CLOCK) {157 currentTime = JulianDate.now(currentTime);158 } else {159 if (this.clockStep === ClockStep.TICK_DEPENDENT) {160 currentTime = JulianDate.addSeconds(currentTime, multiplier, currentTime);161 } else {162 var milliseconds = currentSystemTime - this._lastSystemTime;163 currentTime = JulianDate.addSeconds(currentTime, multiplier * (milliseconds / 1000.0), currentTime);164 }165 if (this.clockRange === ClockRange.CLAMPED) {166 if (JulianDate.lessThan(currentTime, startTime)) {167 currentTime = JulianDate.clone(startTime, currentTime);168 } else if (JulianDate.greaterThan(currentTime, stopTime)) {169 currentTime = JulianDate.clone(stopTime, currentTime);170 }171 } else if (this.clockRange === ClockRange.LOOP_STOP) {172 if (JulianDate.lessThan(currentTime, startTime)) {173 currentTime = JulianDate.clone(startTime, currentTime);174 }175 while (JulianDate.greaterThan(currentTime, stopTime)) {176 currentTime = JulianDate.addSeconds(startTime, JulianDate.secondsDifference(currentTime, stopTime), currentTime);177 }178 }179 }180 }181 this.currentTime = currentTime;182 this._lastSystemTime = currentSystemTime;183 this.onTick.raiseEvent(this);184 return currentTime;185 };186 return Clock;...

Full Screen

Full Screen

index.js

Source:index.js Github

copy

Full Screen

1var goku = new Audio('sounds/0.mp3')2var zerotwo = new Audio('sounds/1.mp3')3var kaguya = new Audio('sounds/2.mp3')4var yumeko = new Audio('sounds/3.mp3')5var hori = new Audio('sounds/4.mp3')6var marin = new Audio('sounds/5.mp3')7var mai = new Audio('sounds/6.mp3')8var jinx = new Audio('sounds/7.mp3')9document.addEventListener("keypress", function(e) {10 makesound(e.key)11 animationyep(e.key)12})13var numdrum = document.querySelectorAll(".drum").length14for (var i = 0; i < numdrum; i++) {15 document.querySelectorAll(".drum")[i].addEventListener("click", function() {16 var btninner = this.innerHTML17 makesound(btninner)18 animationyep(btninner)19 })20}21function makesound(key) {22 switch (key) {23 case "w":24 goku.pause()25 zerotwo.pause()26 kaguya.pause()27 yumeko.pause()28 hori.pause()29 marin.pause()30 mai.pause()31 jinx.pause()32 goku.currentTime = 033 zerotwo.currentTime = 034 kaguya.currentTime = 035 yumeko.currentTime = 036 hori.currentTime = 037 marin.currentTime = 038 mai.currentTime = 039 jinx.currentTime = 040 goku.play()41 42 break43 44 case "a":45 goku.pause()46 zerotwo.pause()47 kaguya.pause()48 yumeko.pause()49 hori.pause()50 marin.pause()51 mai.pause()52 jinx.pause()53 goku.currentTime = 054 zerotwo.currentTime = 055 kaguya.currentTime = 056 yumeko.currentTime = 057 hori.currentTime = 058 marin.currentTime = 059 mai.currentTime = 060 jinx.currentTime = 061 62 zerotwo.play()63 break64 case "s":65 goku.pause()66 zerotwo.pause()67 kaguya.pause()68 yumeko.pause()69 hori.pause()70 marin.pause()71 mai.pause()72 jinx.pause()73 goku.currentTime = 074 zerotwo.currentTime = 075 kaguya.currentTime = 076 yumeko.currentTime = 077 hori.currentTime = 078 marin.currentTime = 079 mai.currentTime = 080 jinx.currentTime = 081 82 kaguya.play()83 break84 case "d":85 goku.pause()86 zerotwo.pause()87 kaguya.pause()88 yumeko.pause()89 hori.pause()90 marin.pause()91 mai.pause()92 jinx.pause()93 goku.currentTime = 094 zerotwo.currentTime = 095 kaguya.currentTime = 096 yumeko.currentTime = 097 hori.currentTime = 098 marin.currentTime = 099 mai.currentTime = 0100 jinx.currentTime = 0101 102 yumeko.play()103 break104 case "i":105 goku.pause()106 zerotwo.pause()107 kaguya.pause()108 yumeko.pause()109 hori.pause()110 marin.pause()111 mai.pause()112 jinx.pause()113 goku.currentTime = 0114 zerotwo.currentTime = 0115 kaguya.currentTime = 0116 yumeko.currentTime = 0117 hori.currentTime = 0118 marin.currentTime = 0119 mai.currentTime = 0120 jinx.currentTime = 0121 122 hori.play()123 break124 case "j":125 goku.pause()126 zerotwo.pause()127 kaguya.pause()128 yumeko.pause()129 hori.pause()130 marin.pause()131 mai.pause()132 jinx.pause()133 goku.currentTime = 0134 zerotwo.currentTime = 0135 kaguya.currentTime = 0136 yumeko.currentTime = 0137 hori.currentTime = 0138 marin.currentTime = 0139 mai.currentTime = 0140 jinx.currentTime = 0141 142 marin.play()143 break144 case "k":145 goku.pause()146 zerotwo.pause()147 kaguya.pause()148 yumeko.pause()149 hori.pause()150 marin.pause()151 mai.pause()152 jinx.pause()153 goku.currentTime = 0154 zerotwo.currentTime = 0155 kaguya.currentTime = 0156 yumeko.currentTime = 0157 hori.currentTime = 0158 marin.currentTime = 0159 mai.currentTime = 0160 jinx.currentTime = 0161 162 mai.play()163 break164 case "l":165 goku.pause()166 zerotwo.pause()167 kaguya.pause()168 yumeko.pause()169 hori.pause()170 marin.pause()171 mai.pause()172 jinx.pause()173 goku.currentTime = 0174 zerotwo.currentTime = 0175 kaguya.currentTime = 0176 yumeko.currentTime = 0177 hori.currentTime = 0178 marin.currentTime = 0179 mai.currentTime = 0180 jinx.currentTime = 0181 182 jinx.play()183 break184 185 default:186 goku.pause()187 zerotwo.pause()188 kaguya.pause()189 yumeko.pause()190 hori.pause()191 marin.pause()192 mai.pause()193 jinx.pause()194 goku.currentTime = 0195 zerotwo.currentTime = 0196 kaguya.currentTime = 0197 yumeko.currentTime = 0198 hori.currentTime = 0199 marin.currentTime = 0200 mai.currentTime = 0201 jinx.currentTime = 0202 203 break204 205 }206}207function animationyep(btninner) {208 var actbtn = document.querySelector("." + btninner)209 actbtn.classList.add("pressed")210 setTimeout(function() {211 actbtn.classList.remove("pressed")212 }, 500)...

Full Screen

Full Screen

Transition.js

Source:Transition.js Github

copy

Full Screen

1var Transition = (function (Math) {2 "use strict";3 function linearTweening(currentTime, startValue, changeInValue, duration) {4 return changeInValue * currentTime / duration + startValue;5 }6 function exponentialEasingInAndOut(currentTime, startValue, changeInValue, duration) {7 if (currentTime == 0)8 return startValue;9 if (currentTime == duration)10 return startValue + changeInValue;11 if ((currentTime /= duration / 2) < 1)12 return changeInValue / 2 * Math.pow(2, 10 * (currentTime - 1)) + startValue;13 return changeInValue / 2 * (-Math.pow(2, -10 * --currentTime) + 2) + startValue;14 }15 function elasticEasingInAndOut(currentTime, startValue, changeInValue, duration) {16 if (currentTime == 0)17 return startValue;18 if ((currentTime /= duration) == 1)19 return startValue + changeInValue;20 var period = duration * .3, s = changeInValue < Math.abs(changeInValue) ? period / 4 :21 period / (2 * Math.PI) * Math.asin(changeInValue / changeInValue);22 return changeInValue * Math.pow(2, -10 * currentTime) *23 Math.sin((currentTime * duration - s) * (2 * Math.PI) / period) + changeInValue + startValue;24 }25 function elasticEasingOut(currentTime, startValue, changeInValue, duration) {26 if (currentTime == 0) {27 return startValue;28 }29 if ((currentTime /= duration) == 1) {30 return startValue + changeInValue;31 }32 var period = duration * .3;33 var s;34 if (changeInValue < Math.abs(changeInValue)) {35 s = period / 4;36 } else {37 s = period / (2 * Math.PI) * Math.asin(changeInValue / changeInValue);38 }39 return changeInValue * Math.pow(2, -10 * currentTime) *40 Math.sin((currentTime * duration - s) * (2 * Math.PI) / period) + changeInValue + startValue;41 }42 function quadraticEasingInAndOut(currentTime, startValue, changeInValue, duration) {43 if ((currentTime /= duration / 2) < 1) {44 return changeInValue / 2 * currentTime * currentTime + startValue;45 }46 return -changeInValue / 2 * ((--currentTime) * (currentTime - 2) - 1) + startValue;47 }48 function exponentialEasingIn(currentTime, startValue, changeInValue, duration) {49 if (currentTime != 0) {50 return changeInValue * Math.pow(2, 10 * (currentTime / duration - 1)) + startValue;51 }52 return startValue;53 }54 function exponentialEasingOut(currentTime, startValue, changeInValue, duration) {55 if (currentTime == duration) {56 return startValue + changeInValue;57 } else {58 return changeInValue * (-Math.pow(2, -10 * currentTime / duration) + 1) + startValue;59 }60 }61 function quadraticEasingIn(currentTime, startValue, changeInValue, duration) {62 return changeInValue * (currentTime /= duration) * currentTime + startValue;63 }64 function quadraticEasingOut(currentTime, startValue, changeInValue, duration) {65 return -changeInValue * (currentTime /= duration) * (currentTime - 2) + startValue;66 }67 // not working :( ... don't copy random shit from the fucking internet68 function quinticEasingOutAndIn(currentTime, startValue, changeInValue, duration) {69 currentTime /= duration / 2;70 return changeInValue / 2 * (--currentTime * currentTime * currentTime * currentTime * currentTime + 1) +71 startValue;72 }73 function sinusoidalEasingOutAndIn(currentTime, startValue, changeInValue, duration) {74 if ((currentTime /= duration / 2) < 1) return changeInValue / 2 * (Math.sin(Math.PI * currentTime / 2) ) +75 startValue;76 return -changeInValue / 2 * (Math.cos(Math.PI * --currentTime / 2) - 2) + startValue;77 }78 function sinusoidalEasingIn(currentTime, startValue, changeInValue, duration) {79 return -changeInValue / 2 * (Math.cos(Math.PI * currentTime / duration) - 1) + startValue;80 }81 function sinusoidalEasingOut(currentTime, startValue, changeInValue, duration) {82 return changeInValue * Math.sin(currentTime / duration * (Math.PI / 2)) + startValue;83 }84 // sinusoidal easing in/out - accelerating until halfway, then decelerating85 function sinusoidalEasingInAndOut(currentTime, startValue, changeInValue, duration) {86 return -changeInValue / 2 * (Math.cos(Math.PI * currentTime / duration) - 1) + startValue;87 }88 function bouncingEasingOut(currentTime, startValue, changeInValue, duration) {89 if ((currentTime /= duration) < (1 / 2.75)) {90 return changeInValue * (7.5625 * currentTime * currentTime) + startValue;91 } else if (currentTime < (2 / 2.75)) {92 return changeInValue * (7.5625 * (currentTime -= (1.5 / 2.75)) * currentTime + .75) + startValue;93 } else if (currentTime < (2.5 / 2.75)) {94 return changeInValue * (7.5625 * (currentTime -= (2.25 / 2.75)) * currentTime + .9375) + startValue;95 } else {96 return changeInValue * (7.5625 * (currentTime -= (2.625 / 2.75)) * currentTime + .984375) + startValue;97 }98 }99 return {100 LINEAR: linearTweening,101 EASE_OUT_BOUNCE: bouncingEasingOut,102 EASE_OUT_ELASTIC: elasticEasingOut,103 EASE_IN_OUT_ELASTIC: elasticEasingInAndOut,104 EASE_IN_EXPO: exponentialEasingIn,105 EASE_OUT_EXPO: exponentialEasingOut,106 EASE_IN_OUT_EXPO: exponentialEasingInAndOut,107 EASE_IN_QUAD: quadraticEasingIn,108 EASE_OUT_QUAD: quadraticEasingOut,109 EASE_IN_OUT_QUAD: quadraticEasingInAndOut,110 EASE_OUT_IN_QUINT: quinticEasingOutAndIn,111 EASE_IN_SIN: sinusoidalEasingIn,112 EASE_OUT_SIN: sinusoidalEasingOut,113 EASE_OUT_IN_SIN: sinusoidalEasingOutAndIn,114 EASE_IN_OUT_SIN: sinusoidalEasingInAndOut115 };...

Full Screen

Full Screen

script.js

Source:script.js Github

copy

Full Screen

1moment(Date);2$("#todaysDate").text(moment().format('dddd MMMM Do YYYY, h:mm a'));3var currentTime = moment();4// the following line of code changes the current time to the most recent hour, i.e. 9:30 is read as 9:005currentTime = currentTime.startOf("hour");6//the following line of code adds 9 to "start of day" so that the day starts at 9am (start of work day)7var before = moment().startOf("day").add(9, "hours");8//the following code is for the time blocks, one for each hour from 9am-5pm. 9var timeSlot1 = before.add(0, "h");10timeSlot1 = timeSlot1.format('hh:mm A');11$(".block1").text(timeSlot1);12var timeSlot2 = before.add(1, "h");13timeSlot2 = timeSlot2.format('hh:mm A');14$(".block2").text(timeSlot2);15var timeSlot3 = before.add(1, "h");16 timeSlot3 = timeSlot3.format('hh:mm A');17$(".block3").text(timeSlot3);18var timeSlot4 = before.add(1, "h");19 timeSlot4 = timeSlot4.format('hh:mm A');20$(".block4").text(timeSlot4);21var timeSlot5 = before.add(1, "h");22 timeSlot5 = timeSlot5.format('hh:mm A');23$(".block5").text(timeSlot5);24var timeSlot6 = before.add(1, "h");25 timeSlot6 = timeSlot6.format('hh:mm A');26$(".block6").text(timeSlot6);27var timeSlot7 = before.add(1, "h");28 timeSlot7 = timeSlot7.format('hh:mm A')29$(".block7").text(timeSlot7);30var timeSlot8 = before.add(1, "h");31 timeSlot8 = timeSlot8.format('hh:mm A');32$(".block8").text(timeSlot8);33var timeSlot9 = before.add(1, "h");34 timeSlot9 = timeSlot9.format('hh:mm A');35$(".block9").text(timeSlot9); 36//the following function compares the "hour" in the above time slots to the current time. A class of past, present, or future is given to 'var currentTime'.37// just like above where we added 9 hours to make 9am the start of the day, we are adding hours to the various time slots. 38//".form" is named based on the actual time. for example, "timeSlot8" is for the 4pm hour, and ".form4" is used.39function timeTest() {40 timeSlot1 = moment().startOf('day').add(9, "hours");41 currentTime = currentTime.startOf("hour");42 if (currentTime.isAfter(timeSlot1)) {43 $(".form9").addClass("past");44 }else if (currentTime.isBefore(timeSlot1)) {45 $(".form9").addClass("future");46 }else if (currentTime.isSame(timeSlot1)) {47 $(".form9").addClass("present");48 };49 timeSlot2 = moment().startOf('day').add(10, "hours");50currentTime = currentTime.startOf("hour");51if (currentTime.isAfter(timeSlot2)) {52 $(".form10").addClass("past");53}54else if (currentTime.isBefore(timeSlot2)) {55 $(".form10").addClass("future");56}57else if (currentTime.isSame(timeSlot2)) {58 $(".form10").addClass("present");59};60timeSlot3 = moment().startOf('day').add(11, "hours");61currentTime = currentTime.startOf("hour");62if (currentTime.isAfter(timeSlot3)) {63$(".form11").addClass("past");64}65else if (currentTime.isBefore(timeSlot3)) {66$(".form11").addClass("future");67}68else if (currentTime.isSame(timeSlot3)) {69$(".form11").addClass("present");70};71timeSlot4 = moment().startOf('day').add(12, "hours");72currentTime = currentTime.startOf("hour");73if (currentTime.isAfter(timeSlot4)) {74$(".form12").addClass("past");75}76else if (currentTime.isBefore(timeSlot4)) {77$(".form12").addClass("future");78}79else if (currentTime.isSame(timeSlot4)) {80$(".form12").addClass("present");81};82timeSlot5 = moment().startOf('day').add(13, "hours");83currentTime = currentTime.startOf("hour");84if (currentTime.isAfter(timeSlot5)) {85$(".form1").addClass("past");86}87else if (currentTime.isBefore(timeSlot5)) {88$(".form1").addClass("future");89}90else if (currentTime.isSame(timeSlot5)) {91$(".form1").addClass("present");92};93timeSlot6 = moment().startOf('day').add(14, "hours");94currentTime = currentTime.startOf("hour");95if (currentTime.isAfter(timeSlot6)) {96$(".form2").addClass("past");97}98else if (currentTime.isBefore(timeSlot6)) {99$(".form2").addClass("future");100}101else if (currentTime.isSame(timeSlot6)) {102$(".form2").addClass("present");103};104timeSlot7 = moment().startOf('day').add(15, "hours");105currentTime = currentTime.startOf("hour");106if (currentTime.isAfter(timeSlot7)) {107$(".form3").addClass("past");108}109else if (currentTime.isBefore(timeSlot7)) {110$(".form3").addClass("future");111}112else if (currentTime.isSame(timeSlot7)) {113$(".form3").addClass("present");114};115timeSlot8 = moment().startOf('day').add(16, "hours");116currentTime = currentTime.startOf("hour");117if (currentTime.isAfter(timeSlot8)) {118$(".form4").addClass("past");119}120else if (currentTime.isBefore(timeSlot8)) {121$(".form4").addClass("future");122}123else if (currentTime.isSame(timeSlot8)) {124$(".form4").addClass("present");125};126timeSlot9 = moment().startOf('day').add(16, "hours");127currentTime = currentTime.startOf("hour");128if (currentTime.isAfter(timeSlot9)) {129 $(".form5").addClass("past");130 }131 else if (currentTime.isBefore(timeSlot9)) {132 $(".form5").addClass("future");133 }134 else if (currentTime.isSame(timeSlot9)) {135 $(".form5").addClass("present");136 };137}138timeTest();139//the following for loop cycles through the input area to get item from local storage.140var x = [9, 10, 11, 12, 1, 2, 3, 4, 5];141for (var i = 0; i < x.length; i++) {142 var localHour = localStorage.getItem(x[i]);143 $(".form" + x[i]).val(localHour);144} 145// the following code saves input to local storage when the ".saveBtn" is clicked146 $(".saveBtn").click(function() {147 event.preventDefault();148 var form = $(this).siblings(".form-control").val();149 var list =$(this).parent().data("hour");150 localStorage.setItem(list, form);151 });...

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 time = await page.evaluate(() => window.playwright.currentTime());7 console.log(time);8 await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch();13 const context = await browser.newContext();14 await browser.close();15})();16const { chromium } = require('playwright');17(async () => {18 const browser = await chromium.launch();19 const context = await browser.newContext({20 viewport: {21 },22 });23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext({29 userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',30 });31 await browser.close();32})();33const { chromium

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 console.log(await page.evaluate(() => window.performance.now()));7 await browser.close();8})();

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 startTime = await page.evaluate(() => window.performance.now());7 const endTime = await page.evaluate(() => window.performance.now());8 console.log(`Page loaded in ${endTime - startTime} ms`);9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 const startTime = await page.evaluate(() => window.performance.now());17 const currentTime = await page.evaluate(() => window.performance.currentTime());18 console.log(`Current time is ${currentTime}`);19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch();24 const context = await browser.newContext();25 const page = await context.newPage();26 const startTime = await page.evaluate(() => window.performance.now());27 const currentTime = await page.evaluate(() => window.performance.now());28 console.log(`Current time is ${currentTime}`);29 await browser.close();30})();

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 console.log(await page.evaluate(() => window.playwright.currentTime()));6 await browser.close();7})();8#### playwright.currentTime()

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 page = await browser.newPage();5 let time = await page.evaluate(() => window.playwright.currentTime());6 console.log(time);7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.launch({ headless: false });12 const page = await browser.newPage();13 await page.waitForTimeout(10000);14 await browser.close();15})();16const { chromium } = require('playwright');17(async () => {18 const browser = await chromium.launch({ headless: false });19 const page = await browser.newPage();20 page.on('console', msg => console.log('PAGE LOG:', msg.text()));21 await page.evaluate(() => console.log(`url is ${location.href}`));22 await browser.close();23})();24const { chromium } = require('playwright');25(async () => {26 const browser = await chromium.launch({ headless: false });27 const page = await browser.newPage();28 await page.waitForFunction('window.innerWidth < 100');29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch({ headless: false });34 const page = await browser.newPage();35 const [request] = await Promise.all([36 page.waitForRequest(request => request.url().includes('wikipedia.org')),37 page.click('a'),38 ]);39 console.log(request.url());40 await browser.close();41})();

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 time = await page.evaluate(() => {6 return window.performance.now();7 });8 console.log(time);9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const page = await browser.newPage();15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const page = await browser.newPage();21 const frames = await page.frames();22 for (const frame of frames) {23 const content = await frame.textContent('h1');24 console.log(content);25 }26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch();

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 await page.screenshot({ path: `google.png` });7 await page.waitForTimeout(5000);8 await page.screenshot({ path: `google2.png` });9 await browser.close();10})();

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