| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- import { login } from './login'
- import { openEmail } from './email'
- export function createProject(
- name: string,
- {
- type = 'Blank Project',
- newProjectButtonMatcher = /new project/i,
- }: {
- type?: 'Blank Project' | 'Example Project'
- newProjectButtonMatcher?: RegExp
- } = {}
- ): Cypress.Chainable<string> {
- cy.findAllByRole('button').contains(newProjectButtonMatcher).click()
- // FIXME: This should only look in the left menu
- cy.findAllByText(type).first().click()
- cy.findByRole('dialog').within(() => {
- cy.get('input').type(name)
- cy.findByText('Create').click()
- })
- return cy
- .url()
- .should('match', /\/project\/[a-fA-F0-9]{24}/)
- .then(url => url.split('/').pop())
- }
- function shareProjectByEmail(
- projectName: string,
- email: string,
- level: 'Read only' | 'Can edit'
- ) {
- cy.visit('/project')
- cy.findByText(projectName).click()
- cy.findByText('Share').click()
- cy.findByRole('dialog').within(() => {
- cy.get('input').type(`${email},`)
- cy.get('input')
- .parents('form')
- .within(() => cy.findByText('Can edit').parent().select(level))
- cy.findByText('Share').click({ force: true })
- })
- }
- export function shareProjectByEmailAndAcceptInviteViaDash(
- projectName: string,
- email: string,
- level: 'Read only' | 'Can edit'
- ) {
- shareProjectByEmail(projectName, email, level)
- login(email)
- cy.visit('/project')
- cy.findByText(new RegExp(projectName))
- .parent()
- .parent()
- .within(() => {
- cy.findByText('Join Project').click()
- })
- }
- export function shareProjectByEmailAndAcceptInviteViaEmail(
- projectName: string,
- email: string,
- level: 'Read only' | 'Can edit'
- ) {
- shareProjectByEmail(projectName, email, level)
- login(email)
- openEmail(projectName, frame => {
- frame.contains('View project').then(a => {
- cy.log(
- 'bypass target=_blank and navigate current browser tab/cypress-iframe to project invite'
- )
- cy.visit(a.attr('href')!)
- })
- })
- cy.url().should('match', /\/project\/[a-f0-9]+\/invite\/token\/[a-f0-9]+/)
- cy.findByText(/user would like you to join/)
- cy.contains(new RegExp(`You are accepting this invite as ${email}`))
- cy.findByText('Join Project').click()
- }
- export function enableLinkSharing() {
- let linkSharingReadOnly: string
- let linkSharingReadAndWrite: string
- cy.findByText('Share').click()
- cy.findByText('Turn on link sharing').click()
- cy.findByText('Anyone with this link can view this project')
- .next()
- .should('contain.text', 'http://sharelatex/')
- .then(el => {
- linkSharingReadOnly = el.text()
- })
- cy.findByText('Anyone with this link can edit this project')
- .next()
- .should('contain.text', 'http://sharelatex/')
- .then(el => {
- linkSharingReadAndWrite = el.text()
- })
- return cy.then(() => {
- return { linkSharingReadOnly, linkSharingReadAndWrite }
- })
- }
|