This commit is contained in:
louiscklaw
2025-02-01 01:16:09 +08:00
commit 91fab4a5d5
4178 changed files with 407527 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
context("useAudioPlayer use cases for Spotify-like application", () => {
let audioContext = null
beforeEach(() => {
audioContext = null
cy.visit("http://localhost:1234", {
onBeforeLoad: win => {
const originalAudio = win.AudioContext
cy.stub(win, "AudioContext", () => {
const aud = new originalAudio()
audioContext = aud
return aud
})
}
})
cy.contains("Spotify-ish").click()
})
it("can visualize playback time with a seek bar", () => {
// eslint-disable-next-line cypress/unsafe-to-chain-command
cy.contains("cats")
.click()
.then(() => {
cy.get(".fa-pause").then(() => {
expect(audioContext.state).to.equal("running")
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(4000).then(() => {
// eslint-disable-next-line cypress/unsafe-to-chain-command
cy.get(".playBar__playButton")
.click()
.then(() => {
expect(
audioContext.currentTime
).to.be.approximately(4, 0.5)
})
})
})
})
})
})

View File

@@ -0,0 +1,21 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}

View File

@@ -0,0 +1,25 @@
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add("login", (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })

View File

@@ -0,0 +1,17 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import "./commands"