Skip to content

Commit

Permalink
feat(playertests): add playback and loading tests
Browse files Browse the repository at this point in the history
  • Loading branch information
rolandkakonyi committed Nov 30, 2023
1 parent 8cefd02 commit f1dc4cf
Show file tree
Hide file tree
Showing 4 changed files with 104 additions and 42 deletions.
40 changes: 0 additions & 40 deletions integration_test/tests/exampleSpec.ts

This file was deleted.

5 changes: 3 additions & 2 deletions integration_test/tests/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import ExampleSpec from './exampleSpec';
import PlaybackTest from './playbackTest';
import LoadingTest from './loadingTest';

export default [ExampleSpec];
export default [PlaybackTest, LoadingTest];
40 changes: 40 additions & 0 deletions integration_test/tests/loadingTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { TestScope } from 'cavy';
import {
callPlayerAndExpectEvent,
callPlayerAndExpectEvents,
EventSequence,
EventType,
startPlayerTest,
} from '../playertesting';
import { Sources } from './helper/Sources';

export default (spec: TestScope) => {
spec.describe('loading a source', () => {
spec.it('emits ReadyEvent event', async () => {
await startPlayerTest({}, async () => {
await callPlayerAndExpectEvent((player) => {
player.load(Sources.artOfMotionHls);
}, EventType.Ready);
});
});
spec.it('emits SourceLoad and SourceLoaded events', async () => {
await startPlayerTest({}, async () => {
await callPlayerAndExpectEvents((player) => {
player.load(Sources.artOfMotionHls);
}, EventSequence(EventType.SourceLoad, EventType.SourceLoaded));
});
});
});
spec.describe('unloading the player', () => {
spec.it('emits SourceUnloaded event', async () => {
await startPlayerTest({}, async () => {
await callPlayerAndExpectEvent((player) => {
player.load(Sources.artOfMotionHls);
}, EventType.Ready);
await callPlayerAndExpectEvent((player) => {
player.unload();
}, EventType.SourceUnloaded);
});
});
});
};
61 changes: 61 additions & 0 deletions integration_test/tests/playbackTest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import { TestScope } from 'cavy';
import {
callPlayerAndExpectEvent,
callPlayerAndExpectEvents,
EventSequence,
EventType,
expectEvents,
loadSourceConfig,
playFor,
RepeatedEvent,
startPlayerTest,
} from '../playertesting';
import { Sources } from './helper/Sources';

export default (spec: TestScope) => {
spec.describe('calling player API when a source is loaded', () => {
spec.it(
'emits a Play and Playing events after calling play API',
async () => {
await startPlayerTest({}, async () => {
await loadSourceConfig(Sources.artOfMotionHls);
await callPlayerAndExpectEvents((player) => {
player.play();
}, EventSequence(EventType.Play, EventType.Playing));
});
}
);
spec.it('emits a Paused event after calling pause API', async () => {
await startPlayerTest({}, async () => {
await loadSourceConfig(Sources.artOfMotionHls);
await playFor(1);
await callPlayerAndExpectEvent((player) => {
player.pause();
}, EventType.Paused);
});
});
});
spec.describe('playing a source', () => {
spec.it('emits TimeChanged events', async () => {
await startPlayerTest({}, async () => {
await loadSourceConfig(Sources.artOfMotionHls);
await callPlayerAndExpectEvents((player) => {
player.play();
}, EventSequence(EventType.Play, EventType.Playing));
await expectEvents(RepeatedEvent(EventType.TimeChanged, 5));
});
});
});
spec.describe('playing a source to its end', () => {
spec.it('emits PlaybackFinished event', async () => {
await startPlayerTest({}, async () => {
await loadSourceConfig(Sources.artOfMotionHls);
await callPlayerAndExpectEvent(async (player) => {
player.play();
const duration = await player.getDuration();
player.seek(duration - 3);
}, EventType.PlaybackFinished);
});
});
});
};

0 comments on commit f1dc4cf

Please sign in to comment.