///
///
import React from 'react'
import { mount } from '@cypress/react'
import RunnerCt from '../../src/app/RunnerCt'
import '@packages/runner/src/main.scss'
import { makeState, fakeConfig } from './utils'
const selectors = {
reporter: '[data-cy=reporter]',
noSpecSelectedReporter: '[data-cy=no-spec-selected-reporter]',
specsList: '[data-cy=specs-list]',
searchInput: 'input[placeholder="Find spec..."]',
}
interface Overrides {
saveState?: Function
}
const noop = () => {}
class FakeEventManager {
constructor (overrides: Overrides = {}) {
this.saveState = overrides.saveState || noop
}
start = noop
on = noop
off = noop
stop = noop
notifyRunningSpec = noop
saveState: Function = () => { }
}
describe('RunnerCt', () => {
beforeEach(() => {
cy.viewport(1000, 500)
})
it('renders RunnerCt', () => {
mount(
,
)
cy.percySnapshot()
})
it('renders RunnerCt for video recording', () => {
mount(
,
)
cy.percySnapshot()
})
it('shows hint message if no component specs', () => {
mount(
,
)
cy.contains('No specs found')
cy.percySnapshot()
})
context('keyboard shortcuts', () => {
it('toggles specs list drawer using shortcut', () => {
const saveState = cy.stub()
mount(
,
)
cy.window().then((win) => win.focus())
cy.get(selectors.specsList).should('be.visible')
cy.realPress(['Meta', 'B'])
cy.get(selectors.specsList).should('not.be.visible').then(() => {
expect(saveState).to.have.been.calledWith({ ctIsSpecsListOpen: false })
})
cy.realPress(['Meta', 'B'])
cy.get(selectors.specsList).should('be.visible').then(() => {
expect(saveState).to.have.been.calledWith({ ctIsSpecsListOpen: false }),
expect(saveState).to.have.been.calledWith({ ctIsSpecsListOpen: true })
})
})
it('focuses the search field on "/"', () => {
mount(
,
)
cy.realPress('/')
cy.get(selectors.searchInput).should('be.focused')
})
})
context('no spec selected', () => {
it('hides reporter', () => {
mount()
cy.get(selectors.noSpecSelectedReporter).should('exist')
})
})
})