UNPKG

@revoloo/cypress6

Version:

Cypress.io end to end testing tool

112 lines (97 loc) 3.21 kB
import cs from 'classnames' import { observer, useLocalStore } from 'mobx-react' import React from 'react' import { action } from 'mobx' import appStore from '../lib/app-store' import updateStore from './update-store' import ipc from '../lib/ipc' import { useLifecycle } from '../lib/use-lifecycle' const UpgradeCommand = observer(({ packageManager, command }) => { const state = useLocalStore(() => ({ wasCopied: false, setWasCopied: action((wasCopied) => { state.wasCopied = wasCopied }), })) let resetId const copyToClipboard = () => { if (state.wasCopied) return ipc.setClipboardText(command) state.setWasCopied(true) resetId = setTimeout(() => { state.setWasCopied(false) }, 5000) } useLifecycle({ onUnmount () { // clear timeout when component is unmounted if (resetId) { clearTimeout(resetId) } }, }) const icon = state.wasCopied ? 'fas fa-check' : 'far fa-copy' return ( <span className={cs({ 'was-copied': state.wasCopied })}> {packageManager}: <code> {command} <button className='copy-to-clipboard' onClick={copyToClipboard} disabled={state.wasCopied}> <i className={icon}></i> </button> </code> </span> ) }) const GlobalInstructions = observer(() => { const openDownload = (e) => { e.preventDefault() ipc.externalOpen('https://download.cypress.io/desktop') } return ( <div className='global-mode-instructions'> <p>To update:</p> <ol> <li> <a href='#' onClick={openDownload}>Download the new version.</a> </li> <li> <span>Extract the download and replace the existing app.<strong>*</strong></span> </li> </ol> <p><i className='fas fa-asterisk' /> Remember to <strong>close this app</strong> before replacing.</p> </div> ) }) const ProjectInstructions = observer(() => { const openCyOpenDoc = (e) => { e.preventDefault() ipc.externalOpen('https://on.cypress.io/how-to-open-cypress') } return ( <div className='project-mode-instructions'> <p>To get the latest, run the following command<strong>*</strong>:</p> <ol> <li> <UpgradeCommand packageManager='npm' command={`npm install --save-dev cypress@${updateStore.newVersion}`} /> <UpgradeCommand packageManager='yarn' command={`yarn upgrade cypress@${updateStore.newVersion}`} /> <span className='footnote'><i className='fas fa-asterisk' /> Remember to <strong>close this app</strong> before installing.</span> </li> <li> <span>Run <a href='#' onClick={openCyOpenDoc}><code>node_modules/.bin/cypress open</code></a> to open the new version.</span> </li> </ol> </div> ) }) export const UpdateInstructions = observer(() => ( <> <header> <h4><i className='fas fa-arrow-alt-circle-up'></i> Update to Version {updateStore.newVersion}</h4> </header> <section> <p>You are currently running <strong>Version {appStore.displayVersion}</strong></p> {appStore.isGlobalMode ? <GlobalInstructions /> : <ProjectInstructions />} </section> </> ))