| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import { isExcludedBySharding, startWith } from './helpers/config'
- import { ensureUserExists, login } from './helpers/login'
- describe('LearnWiki', function () {
- const COPYING_A_PROJECT_URL = '/learn/how-to/Copying_a_project'
- const UPLOADING_A_PROJECT_URL = '/learn/how-to/Uploading_a_project'
- const WITHOUT_PROJECTS_USER = 'user-without-projects@example.com'
- const REGULAR_USER = 'user@example.com'
- // Re-use value for "exists" and "does not exist" tests
- const LABEL_LEARN_LATEX = 'Learn LaTeX with a tutorial'
- ensureUserExists({ email: WITHOUT_PROJECTS_USER })
- ensureUserExists({ email: REGULAR_USER })
- describe('enabled in Pro', function () {
- if (isExcludedBySharding('PRO_CUSTOM_2')) return
- startWith({
- pro: true,
- vars: {
- OVERLEAF_PROXY_LEARN: 'true',
- },
- })
- it('should add a documentation entry to the nav bar', function () {
- login(REGULAR_USER)
- cy.visit('/project')
- cy.findByRole('navigation', { name: 'Primary' }).findByRole('menuitem', {
- name: 'Documentation',
- })
- })
- it('should display a tutorial link in the welcome page', function () {
- login(WITHOUT_PROJECTS_USER)
- cy.visit('/project')
- cy.findByRole('link', { name: LABEL_LEARN_LATEX }).should(
- 'have.attr',
- 'href',
- '/learn/latex/Learn_LaTeX_in_30_minutes'
- )
- })
- it('should render wiki page', function () {
- login(REGULAR_USER)
- cy.visit(UPLOADING_A_PROJECT_URL)
- cy.findByRole('heading', { name: 'Uploading a project' })
- cy.contains(/how to create an Overleaf project/)
- cy.findByRole('img', { name: 'Creating a new project on Overleaf' })
- .should('be.visible')
- .and((el: any) => {
- expect(el[0].naturalWidth, 'renders image').to.be.greaterThan(0)
- })
- cy.visit(COPYING_A_PROJECT_URL)
- cy.findByRole('heading', { name: 'Copying a project' })
- cy.findByRole('link', {
- name: '1 How to copy a project (option 1)',
- }).should('exist')
- cy.findByRole('link', {
- name: '2 How to copy a project (option 2)',
- }).should('exist')
- })
- it('should navigate within wiki page using table of contents', function () {
- login(REGULAR_USER)
- cy.visit(COPYING_A_PROJECT_URL)
- cy.findByRole('heading', { name: 'Copying a project' })
- cy.findByRole('link', {
- name: '2 How to copy a project (option 2)',
- }).click()
- cy.url().should('contain', COPYING_A_PROJECT_URL)
- cy.findByRole('heading', {
- name: 'How to copy a project (option 2)',
- }).should('be.visible')
- })
- })
- describe('disabled in Pro', function () {
- if (isExcludedBySharding('PRO_DEFAULT_1')) return
- startWith({ pro: true })
- checkDisabled()
- })
- describe('unavailable in CE', function () {
- if (isExcludedBySharding('CE_CUSTOM_1')) return
- startWith({
- pro: false,
- vars: {
- OVERLEAF_PROXY_LEARN: 'true',
- },
- })
- checkDisabled()
- })
- function checkDisabled() {
- it('should not add a documentation entry to the nav bar', function () {
- login(REGULAR_USER)
- cy.visit('/project')
- cy.findByRole('navigation', { name: 'Primary' })
- .findByRole('menuitem', {
- name: 'Documentation',
- })
- .should('not.exist')
- })
- it('should not render wiki page', function () {
- login(REGULAR_USER)
- cy.visit(COPYING_A_PROJECT_URL, {
- failOnStatusCode: false,
- })
- cy.findByRole('heading', { name: 'Not found' })
- })
- it('should not display a tutorial link in the welcome page', function () {
- login(WITHOUT_PROJECTS_USER)
- cy.visit('/project')
- cy.findByText(LABEL_LEARN_LATEX).should('not.exist')
- })
- }
- })
|