diff --git a/docs/test/index.html b/docs/test/index.html
index 4efbbad51..c7745691c 100644
--- a/docs/test/index.html
+++ b/docs/test/index.html
@@ -35,12 +35,12 @@
-
-
-
+
+
+
diff --git a/docs/test/test.js b/docs/test/test.js
index 76db9bdbe..99e3c8273 100644
--- a/docs/test/test.js
+++ b/docs/test/test.js
@@ -1,11 +1,4608 @@
-describe('Artplayer', function () {
+// Auto-generated smoke tests from documentation code blocks
+// Generated at: 2026-03-07T07:48:59.683Z
+// Do not edit manually - run 'node scripts/build-test.js' to regenerate
+
+describe('Documentation Code Examples', function () {
+ this.timeout(5000);
+
+ beforeEach(function () {
+ // Destroy any existing instances
+ [...Artplayer.instances].forEach((art) => art.destroy());
+ // Reset container
+ const container = document.querySelector('.artplayer-app');
+ if (container) {
+ container.innerHTML = '';
+ }
+ });
+
afterEach(function () {
[...Artplayer.instances].forEach((art) => art.destroy());
});
- it('Constructor', function () {
- expect(Artplayer).to.be.an('function');
- expect(Artplayer.instances).to.be.an('array');
- expect(Artplayer.instances.length).to.be.equal(0);
+ describe('advanced > built-in', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.option);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.template);
+ console.info(art.template.$video);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var container = document.querySelector('.artplayer-app');
+
+ var art = new Artplayer({
+ container: container,
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.events.proxy(container, 'click', event => {
+ console.info('click', event);
+ });
+
+ art.events.hover(container, (event) => {
+ console.info('mouseenter', event);
+ }, (event) => {
+ console.info('mouseleave', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.storage.set('test', { foo: 'bar' });
+ const test = art.storage.get('test');
+ console.info(test);
+ art.storage.del('test');
+ art.storage.clear();
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.storage.name = 'your-storage-key';
+ art.storage.set('test', { foo: 'bar' });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.icons.loading);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.i18n.get('Play'));
+
+ art.i18n.update({
+ 'zh-cn': {
+ Play: 'Your Play'
+ }
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.notice.show = 'Video Ready To Play';
+ })
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.layers.add({
+ html: 'Some Text',
+ });
+
+ setTimeout(() => {
+ art.layers.show = false;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.controls.add({
+ html: 'Some Text',
+ position: 'left',
+ });
+
+ setTimeout(() => {
+ art.controls.show = false;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.contextmenu.add({
+ html: 'Some Text',
+ });
+
+ art.contextmenu.show = true;
+ setTimeout(() => {
+ art.contextmenu.show = false;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.subtitle.url = '/assets/sample/subtitle.srt'
+ art.subtitle.style({
+ color: 'red',
+ });
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 13', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.info.show = true;
+
+ setTimeout(() => {
+ art.info.show = false;
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 14', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.loading.show = true;
+ setTimeout(() => {
+ art.loading.show = false;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 15', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ function hotkeyEvent(event) {
+ console.info('click', event);
+ }
+
+ art.on('ready', () => {
+ art.hotkey.add(32, hotkeyEvent);
+ setTimeout(() => {
+ art.hotkey.remove(32, hotkeyEvent);
+ }, 5000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 16', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.mask.show = false;
+ setTimeout(() => {
+ art.mask.show = true;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 17', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ flip: true,
+ playbackRate: true,
+ aspectRatio: true,
+ subtitleOffset: true,
+ });
+
+ art.on('ready', () => {
+ art.setting.show = true;
+ setTimeout(() => {
+ art.setting.show = false;
+ }, 1000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 18', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ function myPlugin(art) {
+ console.info(art);
+ return {
+ name: 'myPlugin',
+ something: 'something',
+ doSomething: function () {
+ console.info('doSomething');
+ },
+ };
+ }
+
+ art.on('ready', () => {
+ art.plugins.add(myPlugin);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
});
+
+ describe('advanced > class', function () {
+ it('Example 1', function (done) {
+ try {
+ console.info([...Artplayer.instances]);
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info([...Artplayer.instances]);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ console.info(Artplayer.version);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ console.info(Artplayer.env);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ console.info(Artplayer.build);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ console.info(Artplayer.config);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ console.info(Artplayer.utils);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ console.info(Artplayer.scheme);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ console.info(Artplayer.Emitter);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ console.info(Artplayer.validator);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ console.info(Artplayer.kindOf);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ console.info(Artplayer.html);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ console.info(Artplayer.option);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('advanced > event', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('video:canplay', () => {
+ console.info('video:canplay');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.once('video:canplay', () => {
+ console.info('video:canplay');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.emit('focus');
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ const onReady = () => {
+ console.info('ready');
+ art.off('ready', onReady);
+ }
+
+ art.on('ready', onReady);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info('ready');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.url = '/assets/sample/video.mp4'
+ });
+
+ art.on('restart', (url) => {
+ console.info('restart', url);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('pause', () => {
+ console.info('pause');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('play', () => {
+ console.info('play');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('hotkey', (event) => {
+ console.info('hotkey', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.destroy();
+ });
+
+ art.on('destroy', () => {
+ console.info('destroy');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('focus', (event) => {
+ console.info('focus', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('blur', (event) => {
+ console.info('blur', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 13', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('dblclick', (event) => {
+ console.info('dblclick', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 14', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('click', (event) => {
+ console.info('click', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 15', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/404.mp4',
+ });
+
+ art.on('error', (error, reconnectTime) => {
+ console.info(error, reconnectTime);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 16', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('hover', (state, event) => {
+ console.info('hover', state, event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 17', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('mousemove', (event) => {
+ console.info('mousemove', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 18', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('resize', () => {
+ console.info('resize');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 19', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('view', (state) => {
+ console.info('view', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 20', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ lock: true,
+ });
+
+ art.on('lock', (state) => {
+ console.info('lock', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 21', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ aspectRatio: true,
+ setting: true,
+ });
+
+ art.on('aspectRatio', (aspectRatio) => {
+ console.info('aspectRatio', aspectRatio);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 22', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.autoHeight();
+ });
+
+ art.on('autoHeight', (height) => {
+ console.info('autoHeight', height);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 23', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoSize: true,
+ });
+
+ art.on('autoSize', () => {
+ console.info('autoSize');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 24', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ flip: true,
+ setting: true,
+ });
+
+ art.on('flip', (flip) => {
+ console.info('flip', flip);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 25', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreen: true,
+ });
+
+ art.on('fullscreen', (state) => {
+ console.info('fullscreen', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 26', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.fullscreen = true;
+ });
+
+ art.on('fullscreenError', (event) => {
+ console.info('fullscreenError', event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 27', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreenWeb: true,
+ });
+
+ art.on('fullscreenWeb', (state) => {
+ console.info('fullscreenWeb', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 28', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.mini = true;
+ });
+
+ art.on('mini', (state) => {
+ console.info('mini', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 29', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ pip: true,
+ });
+
+ art.on('pip', (state) => {
+ console.info('pip', state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 30', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ screenshot: true,
+ });
+
+ art.on('screenshot', (dataUri) => {
+ console.info('screenshot', dataUri);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 31', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('seek', (currentTime) => {
+ console.info('seek', currentTime);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 32', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitleOffset: true,
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ setting: true,
+ });
+
+ art.on('subtitleOffset', (offset) => {
+ console.info('subtitleOffset', offset);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 33', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ });
+
+ art.on('subtitleBeforeUpdate', (cues) => {
+ console.info('subtitleBeforeUpdate', cues);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 34', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ });
+
+ art.on('subtitleAfterUpdate', (cues) => {
+ console.info('subtitleAfterUpdate', cues);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 35', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ });
+
+ art.on('subtitleLoad', (option, cues) => {
+ console.info('subtitleLoad', cues, option);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 36', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('info', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 37', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('layer', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 38', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('loading', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 39', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('mask', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 40', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('subtitle', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 41', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('contextmenu', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 42', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('control', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 43', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ });
+
+ art.on('setting', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 44', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('muted', (state) => {
+ console.log(state);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 45', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('keydown', (event) => {
+ console.log(event.code);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('advanced > global', function () {
+ it('Example 1', function (done) {
+ try {
+ Artplayer.DEBUG = true;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ console.log(Artplayer.STYLE);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ Artplayer.CONTEXTMENU = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ Artplayer.NOTICE_TIME = 5000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ Artplayer.SETTING_WIDTH = 300;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ loop: true,
+ flip: true,
+ playbackRate: true,
+ aspectRatio: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ Artplayer.SETTING_ITEM_WIDTH = 300;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ loop: true,
+ flip: true,
+ playbackRate: true,
+ aspectRatio: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ Artplayer.SETTING_ITEM_HEIGHT = 40;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ loop: true,
+ flip: true,
+ playbackRate: true,
+ aspectRatio: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ Artplayer.RESIZE_TIME = 500;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('resize', () => {
+ console.log('resize');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ Artplayer.SCROLL_TIME = 500;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('scroll', () => {
+ console.log('scroll');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ Artplayer.SCROLL_GAP = 100;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('scroll', () => {
+ console.log('scroll');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ Artplayer.AUTO_PLAYBACK_MAX = 20;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoPlayback: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ Artplayer.AUTO_PLAYBACK_MIN = 10;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoPlayback: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 13', function (done) {
+ try {
+ Artplayer.AUTO_PLAYBACK_TIMEOUT = 5000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoPlayback: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 14', function (done) {
+ try {
+ Artplayer.RECONNECT_TIME_MAX = 10;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/404.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 15', function (done) {
+ try {
+ Artplayer.RECONNECT_SLEEP_TIME = 3000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/404.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 16', function (done) {
+ try {
+ Artplayer.CONTROL_HIDE_TIME = 5000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 17', function (done) {
+ try {
+ Artplayer.DBCLICK_TIME = 500;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('dblclick', () => {
+ console.log('dblclick');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 18', function (done) {
+ try {
+ Artplayer.DBCLICK_FULLSCREEN = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 19', function (done) {
+ try {
+ Artplayer.MOBILE_DBCLICK_PLAY = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 20', function (done) {
+ try {
+ Artplayer.MOBILE_CLICK_PLAY = true;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 21', function (done) {
+ try {
+ Artplayer.AUTO_ORIENTATION_TIME = 500;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoOrientation: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 22', function (done) {
+ try {
+ Artplayer.INFO_LOOP_TIME = 2000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.info.show = true;
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 23', function (done) {
+ try {
+ Artplayer.FAST_FORWARD_VALUE = 5;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fastForward: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 24', function (done) {
+ try {
+ Artplayer.FAST_FORWARD_TIME = 2000;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fastForward: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 25', function (done) {
+ try {
+ Artplayer.TOUCH_MOVE_RATIO = 1;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 26', function (done) {
+ try {
+ Artplayer.VOLUME_STEP = 0.2;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 27', function (done) {
+ try {
+ Artplayer.SEEK_STEP = 10;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 28', function (done) {
+ try {
+ Artplayer.PLAYBACK_RATE = [0.5, 1, 2, 3, 4, 5];
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ playbackRate: true,
+ });
+
+ art.contextmenu.show = true;
+ art.setting.show = true;
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 29', function (done) {
+ try {
+ Artplayer.ASPECT_RATIO = ['default', '1:1', '2:1', '4:3', '6:5'];
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ aspectRatio: true,
+ });
+
+ art.contextmenu.show = true;
+ art.setting.show = true;
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 30', function (done) {
+ try {
+ Artplayer.FLIP = ['normal', 'horizontal'];
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ flip: true,
+ });
+
+ art.contextmenu.show = true;
+ art.setting.show = true;
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 31', function (done) {
+ try {
+ Artplayer.FULLSCREEN_WEB_IN_BODY = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreenWeb: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 32', function (done) {
+ try {
+ Artplayer.LOG_VERSION = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 33', function (done) {
+ try {
+ Artplayer.USE_RAF = true;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ miniProgressBar: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 34', function (done) {
+ try {
+ Artplayer.REMOVE_SRC_WHEN_DESTROY = false;
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ // Only destroys the UI, does not actively clear src
+ art.destroy();
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('advanced > plugin', function () {
+ it('Example 1', function (done) {
+ try {
+ function myPlugin(art) {
+ console.info(art);
+ return {
+ name: 'myPlugin',
+ something: 'something',
+ doSomething: function () {
+ console.info('doSomething');
+ },
+ };
+ }
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ plugins: [myPlugin],
+ });
+
+ art.on('ready', () => {
+ console.info(art.plugins.myPlugin);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ function myPlugin(art) {
+ console.info(art);
+ return {
+ name: 'myPlugin',
+ something: 'something',
+ doSomething: function () {
+ console.info('doSomething');
+ },
+ };
+ }
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.plugins.add(myPlugin);
+
+ art.on('ready', () => {
+ console.info(art.plugins.myPlugin);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ function adsPlugin(option) {
+ return (art) => {
+ art.layers.add({
+ name: 'ads',
+ html: ``,
+ style: {
+ display: 'none',
+ position: 'absolute',
+ top: '20px',
+ right: '20px',
+ },
+ });
+
+ function show() {
+ art.layers.ads.style.display = 'block';
+ }
+
+ function hide() {
+ art.layers.ads.style.display = 'none';
+ }
+
+ art.controls.add({
+ name: 'hide-ads',
+ position: 'right',
+ html: 'Hide Ads',
+ tooltip: 'Hide Ads',
+ click: hide,
+ style: {
+ marginRight: '20px'
+ }
+ });
+
+ art.controls.add({
+ name: 'show-ads',
+ position: 'right',
+ html: 'Show Ads',
+ tooltip: 'Show Ads',
+ click: show,
+ });
+
+ art.on('play', hide);
+ art.on('pause', show);
+
+ return {
+ name: 'adsPlugin',
+ show,
+ hide
+ };
+ }
+ }
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ plugins: [
+ adsPlugin({
+ url: '/assets/sample/layer.png'
+ })
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('advanced > property', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ });
+
+ art.on('ready', () => {
+ art.play();
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ });
+
+ art.on('ready', () => {
+ art.play();
+
+ setTimeout(() => {
+ art.pause();
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ });
+
+ art.on('ready', () => {
+ art.toggle();
+
+ setTimeout(() => {
+ art.toggle();
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.destroy();
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ // Only reset the video, do not remove the interface
+ art.reset();
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.seek = 5;
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.forward = 5;
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.seek = 5;
+
+ setTimeout(() => {
+ art.backward = 2;
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.volume);
+ art.volume = 0.5;
+ console.info(art.volume);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.url = '/assets/sample/video.mp4?t=0';
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.seek = 10;
+ setTimeout(() => {
+ art.switch = '/assets/sample/video.mp4?t=0';
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.seek = 10;
+ setTimeout(() => {
+ art.switchUrl('/assets/sample/video.mp4?t=0');
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 13', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.seek = 10;
+ setTimeout(() => {
+ art.switchQuality('/assets/sample/video.mp4?t=0');
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 14', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.muted);
+ art.muted = true;
+ console.info(art.muted);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 15', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.currentTime);
+ art.currentTime = 5;
+ console.info(art.currentTime);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 16', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.duration);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 17', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.screenshot('your-name');
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 18', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', async () => {
+ const url = await art.getDataURL();
+ console.info(url)
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 19', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', async () => {
+ const url = await art.getBlobUrl();
+ console.info(url);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 20', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ position: 'right',
+ html: 'Fullscreen Switch',
+ click: function () {
+ art.fullscreen = !art.fullscreen;
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 21', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreenWeb: true,
+ });
+
+ art.on('ready', () => {
+ art.fullscreenWeb = true;
+
+ setTimeout(() => {
+ art.fullscreenWeb = false;
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 22', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ position: 'right',
+ html: 'PIP',
+ click: function () {
+ art.pip = !art.pip;
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 23', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ poster: '/assets/sample/poster.jpg',
+ });
+
+ art.on('ready', () => {
+ console.info(art.poster);
+ art.poster = '/assets/sample/poster.jpg?t=0';
+ console.info(art.poster);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 24', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.mini = true;
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 25', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ });
+
+ art.on('ready', () => {
+ console.info(art.playing);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 26', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.state); // Default: standard
+ art.state = 'mini';
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 27', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.autoSize();
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 28', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(JSON.stringify(art.rect));
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 29', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.width, art.height, art.left, art.top);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 30', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.flip);
+ art.flip = 'horizontal';
+ console.info(art.flip);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 31', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.playbackRate);
+ art.playbackRate = 2;
+ console.info(art.playbackRate);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 32', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.aspectRatio);
+ art.aspectRatio = '16:9';
+ console.info(art.aspectRatio);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 33', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.autoHeight();
+ });
+
+ art.on('resize', () => {
+ art.autoHeight();
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 34', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.attr('playsInline'));
+ art.attr('playsInline', true);
+ console.info(art.attr('playsInline'));
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 35', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.type);
+ art.type = 'm3u8';
+ console.info(art.type);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 36', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.info(art.theme);
+ art.theme = '#000';
+ console.info(art.theme);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 37', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ position: 'right',
+ html: 'AirPlay',
+ click: function () {
+ art.airplay();
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 38', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('video:timeupdate', () => {
+ console.info(art.loaded);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 39', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('video:timeupdate', () => {
+ console.info(art.loadedTime);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 40', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('video:timeupdate', () => {
+ console.info(art.played);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 41', function (done) {
+ try {
+ var container = document.querySelector('.artplayer-app');
+
+ var art = new Artplayer({
+ container: container,
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.proxy(container, 'click', event => {
+ console.info(event);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 42', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.query('.art-video'));
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 43', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ console.info(art.video);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 44', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ console.log(art.cssVar('--art-theme'));
+ art.cssVar('--art-theme', 'green');
+ console.log(art.cssVar('--art-theme'));
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 45', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ quality: [
+ {
+ default: true,
+ html: 'SD 480P',
+ url: '/assets/sample/video.mp4',
+ },
+ {
+ html: 'HD 720P',
+ url: '/assets/sample/video.mp4',
+ },
+ ],
+ });
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ art.quality = [
+ {
+ default: true,
+ html: '1080P',
+ url: '/assets/sample/video.mp4',
+ },
+ {
+ html: '4K',
+ url: '/assets/sample/video.mp4',
+ },
+ ];
+ }, 3000);
+ })
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 46', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.on('ready', () => {
+ art.thumbnails = {
+ url: '/assets/sample/thumbnails.png',
+ number: 60,
+ column: 10,
+ };
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 47', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ });
+
+ art.on('ready', () => {
+ art.subtitleOffset = 1;
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('component > contextmenu', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ contextmenu: [
+ {
+ name: 'your-menu',
+ html: 'Your Menu',
+ click: function (...args) {
+ console.info(args);
+ art.contextmenu.show = false;
+ },
+ },
+ ],
+ });
+
+ art.contextmenu.show = true;
+
+ // Get the Element of contextmenu by name
+ console.info(art.contextmenu['your-menu']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.contextmenu.add({
+ name: 'your-menu',
+ html: 'Your Menu',
+ click: function (...args) {
+ console.info(args);
+ art.contextmenu.show = false;
+ },
+ });
+
+ art.contextmenu.show = true;
+
+ // Get the Element of contextmenu by name
+ console.info(art.contextmenu['your-menu']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ contextmenu: [
+ {
+ name: 'your-menu',
+ html: 'Your Menu',
+ click: function (...args) {
+ console.info(args);
+ art.contextmenu.show = false;
+ },
+ },
+ ],
+ });
+
+ art.contextmenu.show = true;
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Delete the contextmenu by name
+ art.contextmenu.remove('your-menu')
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ contextmenu: [
+ {
+ name: 'your-menu',
+ html: 'Your Menu',
+ click: function (...args) {
+ console.info(args);
+ art.contextmenu.show = false;
+ },
+ },
+ ],
+ });
+
+ art.contextmenu.show = true;
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Update the contextmenu by name
+ art.contextmenu.update({
+ name: 'your-menu',
+ html: 'Your New Menu',
+ })
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('component > controls', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ name: 'your-button',
+ index: 10,
+ position: 'left',
+ html: 'Your Button',
+ tooltip: 'Your Button',
+ style: {
+ color: 'red',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ },
+ mounted: function (...args) {
+ console.info('mounted', args);
+ },
+ },
+ {
+ name: 'subtitle',
+ position: 'right',
+ html: 'Subtitle',
+ selector: [
+ {
+ default: true,
+ html: 'subtitle 01',
+ },
+ {
+ html: 'subtitle 02',
+ },
+ ],
+ onSelect: function (item, $dom) {
+ console.info(item, $dom);
+ return 'Your ' + item.html;
+ },
+ },
+ ],
+ });
+
+ // Get the Element of control by name
+ console.info(art.controls['your-button']);
+ console.info(art.controls['subtitle']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.controls.add({
+ name: 'button1',
+ index: 10,
+ position: 'left',
+ html: 'Your Button',
+ tooltip: 'Your Button',
+ style: {
+ color: 'red',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ },
+ mounted: function (...args) {
+ console.info('mounted', args);
+ },
+ });
+
+ // Get the Element of control by name
+ console.info(art.controls['button1']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ name: 'button1',
+ index: 10,
+ position: 'right',
+ html: 'Your Button',
+ tooltip: 'Your Button',
+ style: {
+ color: 'red',
+ },
+ }
+ ]
+ });
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Delete the control by name
+ art.controls.remove('button1');
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ name: 'button1',
+ index: 10,
+ position: 'right',
+ html: 'Subtitle',
+ selector: [
+ {
+ default: true,
+ html: 'subtitle 01',
+ },
+ {
+ html: 'subtitle 02',
+ },
+ ],
+ }
+ ]
+ });
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Update the control by name
+ art.controls.update({
+ name: 'button1',
+ index: 10,
+ position: 'right',
+ html: 'New Subtitle',
+ selector: [
+ {
+ default: true,
+ html: 'new subtitle 01',
+ },
+ {
+ html: 'new subtitle 02',
+ },
+ ],
+ });
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('component > layers', function () {
+ it('Example 1', function (done) {
+ try {
+ var img = '/assets/sample/layer.png';
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ layers: [
+ {
+ name: 'potser',
+ html: `
`,
+ tooltip: 'Potser Tip',
+ style: {
+ position: 'absolute',
+ top: '50px',
+ right: '50px',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ },
+ mounted: function (...args) {
+ console.info('mounted', args);
+ },
+ },
+ ],
+ });
+
+ // Get the Element of layer by name
+ console.info(art.layers['potser']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var img = '/assets/sample/layer.png';
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+
+ art.layers.add({
+ name: 'potser',
+ html: `
`,
+ tooltip: 'Potser Tip',
+ style: {
+ position: 'absolute',
+ top: '50px',
+ right: '50px',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ },
+ mounted: function (...args) {
+ console.info('mounted', args);
+ },
+ });
+
+ // Get the Element of layer by name
+ console.info(art.layers['potser']);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var img = '/assets/sample/layer.png';
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ layers: [
+ {
+ name: 'potser',
+ html: `
`,
+ style: {
+ position: 'absolute',
+ top: '50px',
+ right: '50px',
+ },
+ },
+ ],
+ });
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Delete the layer by name
+ art.layers.remove('potser');
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var img = '/assets/sample/layer.png';
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ layers: [
+ {
+ name: 'potser',
+ html: `
`,
+ style: {
+ position: 'absolute',
+ top: '50px',
+ right: '50px',
+ },
+ },
+ ],
+ });
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Update the layer by name
+ art.layers.update({
+ name: 'potser',
+ html: `
`,
+ style: {
+ position: 'absolute',
+ top: '50px',
+ left: '50px',
+ },
+ });
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('component > setting', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ flip: true,
+ playbackRate: true,
+ aspectRatio: true,
+ subtitleOffset: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'Button',
+ icon: '
',
+ tooltip: 'tooltip',
+ onClick(item, $dom, event) {
+ console.info(item, $dom, event);
+ return 'new tooltip'
+ }
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'Subtitle',
+ width: 250,
+ tooltip: 'Subtitle 01',
+ selector: [
+ {
+ default: true,
+ html: 'Subtitle 01',
+ url: '/assets/sample/subtitle.srt?id=1',
+ },
+ {
+ html: 'Subtitle 02',
+ url: '/assets/sample/subtitle.srt?id=2',
+ },
+ ],
+ onSelect: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ art.subtitle.url = item.url;
+ return item.html;
+ },
+ },
+ {
+ html: 'Quality',
+ width: 150,
+ tooltip: '1080P',
+ selector: [
+ {
+ default: true,
+ html: '1080P',
+ url: '/assets/sample/video.mp4?id=1080',
+ },
+ {
+ html: '720P',
+ url: '/assets/sample/video.mp4?id=720',
+ },
+ {
+ html: '360P',
+ url: '/assets/sample/video.mp4?id=360',
+ },
+ ],
+ onSelect: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ art.switchQuality(item.url, item.html);
+ return item.html;
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'Multi-level',
+ selector: [
+ {
+ html: 'Setting 01',
+ width: 150,
+ selector: [
+ {
+ html: 'Setting 01 - 01',
+ },
+ {
+ html: 'Setting 01 - 02',
+ },
+ ],
+ onSelect: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ return item.html;
+ },
+ },
+ {
+ html: 'Setting 02',
+ width: 150,
+ selector: [
+ {
+ html: 'Setting 02 - 01',
+ },
+ {
+ html: 'Setting 02 - 02',
+ },
+ ],
+ onSelect: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ return item.html;
+ },
+ },
+ ],
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'PIP Mode',
+ tooltip: 'Close',
+ icon: '
',
+ switch: false,
+ onSwitch: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ const nextState = !item.switch;
+ art.pip = nextState;
+ item.tooltip = nextState ? 'Open' : 'Close';
+ return nextState;
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'Slider',
+ tooltip: '5x',
+ icon: '
',
+ range: [5, 1, 10, 1],
+ onChange: function (item, $dom, event) {
+ console.info(item, $dom, event);
+ return item.range[0] + 'x';
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ });
+
+ art.setting.show = true;
+
+ art.setting.add({
+ html: 'Slider',
+ tooltip: '5x',
+ icon: '
',
+ range: [5, 1, 10, 1],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ flip: true,
+ settings: [
+ {
+ name: 'slider',
+ html: 'Slider',
+ tooltip: '5x',
+ icon: '
',
+ range: [5, 1, 10, 1],
+ },
+ ],
+ });
+
+ art.setting.show = true;
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Delete the setting by name
+ art.setting.remove('slider');
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ name: 'slider',
+ html: 'Slider',
+ tooltip: '5x',
+ icon: '
',
+ range: [5, 1, 10, 1],
+ },
+ ],
+ });
+
+ art.setting.show = true;
+
+ art.on('ready', () => {
+ setTimeout(() => {
+ // Update the setting by name
+ art.setting.update({
+ name: 'slider',
+ html: 'PIP Mode',
+ tooltip: 'Close',
+ icon: '
',
+ switch: false,
+ });
+ }, 3000);
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
+ describe('start > option', function () {
+ it('Example 1', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ // container: document.querySelector('.artplayer-app'),
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 2', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 3', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ });
+
+ setTimeout(() => {
+ art.url = '/assets/sample/video.mp4';
+ }, 1000);
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 4', function (done) {
+ try {
+ var art = new Artplayer({
+ id: 'your-url-id',
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 5', function (done) {
+ try {
+ var art = new Artplayer(
+ {
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ },
+ function onReady(art) {
+ this.play()
+ },
+ );
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 6', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ poster: '/assets/sample/poster.jpg',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 7', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ theme: '#ffad00',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 8', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ volume: 0.5,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 9', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ isLive: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 10', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ muted: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 11', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoplay: true,
+ muted: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 12', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoSize: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 13', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoMini: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 14', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ loop: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 15', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ flip: true,
+ setting: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 16', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ playbackRate: true,
+ setting: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 17', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ aspectRatio: true,
+ setting: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 18', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ screenshot: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 19', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 20', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ hotkey: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 21', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ pip: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 22', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ mutex: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 23', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ backdrop: false, // Disable frosted glass effect
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 24', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreen: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 25', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fullscreenWeb: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 26', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitleOffset: true,
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ },
+ setting: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 27', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ miniProgressBar: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 28', function (done) {
+ try {
+ var $container = document.querySelector('.artplayer-app');
+ $container.innerHTML = Artplayer.html;
+
+ var art = new Artplayer({
+ container: $container,
+ url: '/assets/sample/video.mp4',
+ useSSR: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 29', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ playsInline: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 30', function (done) {
+ try {
+ var img = '/assets/sample/layer.png';
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ layers: [
+ {
+ name: 'potser',
+ html: `
`,
+ style: {
+ position: 'absolute',
+ top: '20px',
+ right: '20px',
+ opacity: '.9',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ art.layers.show = false;
+ },
+ mounted: function (...args) {
+ console.info('mounted', args);
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 31', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ setting: true,
+ settings: [
+ {
+ html: 'setting01',
+ selector: [
+ {
+ html: 'setting01-01',
+ },
+ {
+ html: 'setting01-02',
+ },
+ ],
+ onSelect: function (...args) {
+ console.info(args);
+ },
+ },
+ {
+ html: 'setting02',
+ selector: [
+ {
+ html: 'setting02-01',
+ },
+ {
+ html: 'setting02-02',
+ },
+ ],
+ onSelect: function (...args) {
+ console.info(args);
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 32', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ contextmenu: [
+ {
+ html: 'your-menu',
+ click: function (...args) {
+ console.info('click', args);
+ art.contextmenu.show = false;
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 33', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ controls: [
+ {
+ position: 'left',
+ html: 'your-control',
+ tooltip: 'Your Control',
+ style: {
+ color: 'green',
+ },
+ click: function (...args) {
+ console.info('click', args);
+ },
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 34', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ quality: [
+ {
+ default: true,
+ html: 'SD 480P',
+ url: '/assets/sample/video.mp4',
+ },
+ {
+ html: 'HD 720P',
+ url: '/assets/sample/video.mp4',
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 35', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ highlight: [
+ {
+ time: 60,
+ text: 'One more chance',
+ },
+ {
+ time: 120,
+ text: '谁でもいいはずなのに',
+ },
+ {
+ time: 180,
+ text: '夏の想い出がまわる',
+ },
+ {
+ time: 240,
+ text: 'こんなとこにあるはずもないのに',
+ },
+ {
+ time: 300,
+ text: '--终わり--',
+ },
+ ],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 36', function (done) {
+ try {
+ function myPlugin(art) {
+ console.info(art);
+ return {
+ name: 'myPlugin',
+ something: 'something',
+ doSomething: function () {
+ console.info('doSomething');
+ },
+ };
+ }
+
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ plugins: [myPlugin],
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 37', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ thumbnails: {
+ url: '/assets/sample/thumbnails.png',
+ number: 60,
+ column: 10,
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 38', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ subtitle: {
+ url: '/assets/sample/subtitle.srt',
+ type: 'srt',
+ encoding: 'utf-8',
+ escape: true,
+ style: {
+ color: '#03A9F4',
+ 'font-size': '30px',
+ },
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 39', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ moreVideoAttr: {
+ 'webkit-playsinline': true,
+ playsInline: true,
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 40', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ icons: {
+ loading: '
',
+ state: '
',
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 41', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.m3u8',
+ type: 'm3u8',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 42', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.m3u8',
+ customType: {
+ m3u8: function (video, url, art) {
+ //
+ },
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 43', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ lang: 'en',
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 44', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ lang: 'your-lang',
+ i18n: {
+ 'your-lang': {
+ Play: 'Your Play'
+ },
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 45', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ i18n: {
+ 'zh-cn': {
+ Play: 'Your Play'
+ },
+ 'zh-tw': {
+ Play: 'Your Play'
+ },
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 46', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ lock: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 47', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ gesture: false,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 48', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ fastForward: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 49', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ id: 'your-url-id',
+ autoPlayback: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 50', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ autoOrientation: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 51', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ airplay: true,
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 52', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ cssVar: {
+ //
+ },
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ it('Example 53', function (done) {
+ try {
+ var art = new Artplayer({
+ container: '.artplayer-app',
+ url: '/assets/sample/video.mp4',
+ proxy: () => document.createElement('video')
+ });
+ // Wait a bit for async initialization
+ setTimeout(() => done(), 100);
+ } catch (err) {
+ done(err);
+ }
+ });
+
+ });
+
});
\ No newline at end of file
diff --git a/package.json b/package.json
index 0b26d07b8..bb6b8f563 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"build:llm": "node ./scripts/build-llm.js",
"build:docs": "node ./scripts/build-docs.js",
"build:i18n": "node ./scripts/build-i18n.js",
+ "build:test": "node ./scripts/build-test.js",
"trans:docs": "node ./scripts/trans-docs.js",
"create:plugin": "node ./scripts/plugin/create.js",
"dev": "npx cross-env NODE_ENV=development node ./scripts/dev.js",
diff --git a/packages/artplayer-vitepress/docs/en/advanced/built-in.md b/packages/artplayer-vitepress/docs/en/advanced/built-in.md
index 8ab6dfbf7..91e7bc5de 100644
--- a/packages/artplayer-vitepress/docs/en/advanced/built-in.md
+++ b/packages/artplayer-vitepress/docs/en/advanced/built-in.md
@@ -500,4 +500,5 @@ function myPlugin(art) {
art.on('ready', () => {
art.plugins.add(myPlugin);
-});
\ No newline at end of file
+});
+```
\ No newline at end of file
diff --git a/packages/artplayer-vitepress/docs/en/advanced/class.md b/packages/artplayer-vitepress/docs/en/advanced/class.md
index a447a85b0..77d5e3f51 100644
--- a/packages/artplayer-vitepress/docs/en/advanced/class.md
+++ b/packages/artplayer-vitepress/docs/en/advanced/class.md
@@ -132,4 +132,5 @@ Returns the default options for the player.