UNPKG

@revoloo/cypress6

Version:

Cypress.io end to end testing tool

102 lines (89 loc) 3.03 kB
import React, { Component } from 'react' import Tooltip from '@cypress/react-tooltip' import cs from 'classnames' import eventManager from '../lib/event-manager' import { StudioInstructionsModal } from './studio-modals' class Studio extends Component { constructor (props) { super(props) this.state = { modalOpen: false } } render () { const { model, hasUrl } = this.props return ( <div className='header-popup studio'> <StudioInstructionsModal open={this.state.modalOpen} close={() => this.setState({ modalOpen: false })} /> <div className='text-block'> <span className={cs('icon', { 'is-active': model.isActive && !model.isFailed && hasUrl })}> <i className='fas' /> </span>{' '} <span className='title'>Studio</span>{' '} <span className='beta'>Beta</span> </div> <div className='text-block'> <a href='#' onClick={this._showModal} className={cs('available-commands', { 'link-disabled': model.isLoading })}>Available Commands</a> </div> <div className='text-block'> <a href={!model.isLoading ? 'https://on.cypress.io/studio-beta' : undefined} target='_blank' className={cs('give-feedback', { 'link-disabled': model.isLoading })}>Give Feedback</a> </div> <div className='studio-controls'> <Tooltip title='Close Studio' className='cy-tooltip' visible={model.isLoading ? false : null} > <button className='header-button button-studio button-studio-close' disabled={model.isLoading} onClick={this._close} > <i className='fas fa-times' /> </button> </Tooltip> <Tooltip title='Restart' className='cy-tooltip' visible={model.isLoading ? false : null} > <button className='header-button button-studio button-studio-restart' disabled={model.isLoading} onClick={this._restart} > <i className='fas fa-undo' /> </button> </Tooltip> <Tooltip title='Save Test' className='cy-tooltip' visible={model.isLoading ? false : null} > <button className='header-button button-studio button-studio-save' disabled={model.isLoading} onClick={this._save} > <i className='fas fa-save' /> </button> </Tooltip> </div> </div> ) } _showModal = (e) => { e.preventDefault() if (this.props.model.isLoading) return this.setState({ modalOpen: true }) } _close = () => { eventManager.emit('studio:cancel') } _restart = () => { this.props.model.reset() eventManager.emit('restart') } _save = () => { this.props.model.startSave() } } export default Studio