mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
Merge pull request #9993 from overleaf/jel-fix-flaky-test
[web] Fix flaky frontend test GitOrigin-RevId: 580678473f09cb21ac2ca20cf9d16ecc05cd4236
This commit is contained in:
parent
9d31ea62b3
commit
2aaeea68a9
2 changed files with 41 additions and 25 deletions
|
@ -517,25 +517,18 @@ describe('<ProjectListRoot />', function () {
|
||||||
.null
|
.null
|
||||||
})
|
})
|
||||||
|
|
||||||
it('opens the rename modal, and can rename the project, and view updated', async function () {
|
it('validates the project name', async function () {
|
||||||
const renameProjectMock = fetchMock.post(
|
const moreDropdown = await within(
|
||||||
`express:/project/:id/rename`,
|
actionsToolbar
|
||||||
{
|
).findByText<HTMLElement>('More')
|
||||||
status: 200,
|
fireEvent.click(moreDropdown)
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
await waitFor(() => {
|
|
||||||
const moreDropdown =
|
|
||||||
within(actionsToolbar).getByText<HTMLElement>('More')
|
|
||||||
fireEvent.click(moreDropdown)
|
|
||||||
})
|
|
||||||
|
|
||||||
const renameButton =
|
const renameButton =
|
||||||
screen.getAllByText<HTMLInputElement>('Rename')[1] // first one is for the tag in the sidebar
|
screen.getAllByText<HTMLInputElement>('Rename')[1] // first one is for the tag in the sidebar
|
||||||
fireEvent.click(renameButton)
|
fireEvent.click(renameButton)
|
||||||
|
|
||||||
const modal = screen.getAllByRole('dialog')[0]
|
const modals = await screen.findAllByRole('dialog')
|
||||||
|
const modal = modals[0]
|
||||||
|
|
||||||
expect(sendSpy).to.be.calledOnce
|
expect(sendSpy).to.be.calledOnce
|
||||||
expect(sendSpy).calledWith('project-list-page-interaction')
|
expect(sendSpy).calledWith('project-list-page-interaction')
|
||||||
|
@ -545,25 +538,47 @@ describe('<ProjectListRoot />', function () {
|
||||||
within(modal).getByText<HTMLInputElement>('Rename')
|
within(modal).getByText<HTMLInputElement>('Rename')
|
||||||
expect(confirmButton.disabled).to.be.true
|
expect(confirmButton.disabled).to.be.true
|
||||||
let input = screen.getByLabelText('New Name') as HTMLButtonElement
|
let input = screen.getByLabelText('New Name') as HTMLButtonElement
|
||||||
const oldName = input.value
|
|
||||||
|
|
||||||
// no name
|
// no name
|
||||||
let newProjectName = ''
|
|
||||||
input = screen.getByLabelText('New Name') as HTMLButtonElement
|
input = screen.getByLabelText('New Name') as HTMLButtonElement
|
||||||
fireEvent.change(input, {
|
fireEvent.change(input, {
|
||||||
target: { value: newProjectName },
|
target: { value: '' },
|
||||||
})
|
})
|
||||||
confirmButton = within(modal).getByText<HTMLInputElement>('Rename')
|
confirmButton = within(modal).getByText<HTMLInputElement>('Rename')
|
||||||
expect(confirmButton.disabled).to.be.true
|
expect(confirmButton.disabled).to.be.true
|
||||||
|
})
|
||||||
|
|
||||||
|
it('opens the rename modal, and can rename the project, and view updated', async function () {
|
||||||
|
const renameProjectMock = fetchMock.post(
|
||||||
|
`express:/project/:id/rename`,
|
||||||
|
{
|
||||||
|
status: 200,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
const moreDropdown = await within(
|
||||||
|
actionsToolbar
|
||||||
|
).findByText<HTMLElement>('More')
|
||||||
|
fireEvent.click(moreDropdown)
|
||||||
|
|
||||||
|
const renameButton =
|
||||||
|
screen.getAllByText<HTMLInputElement>('Rename')[1] // first one is for the tag in the sidebar
|
||||||
|
fireEvent.click(renameButton)
|
||||||
|
|
||||||
|
const modals = await screen.findAllByRole('dialog')
|
||||||
|
const modal = modals[0]
|
||||||
|
|
||||||
// a valid name
|
// a valid name
|
||||||
newProjectName = 'A new project name'
|
const newProjectName = 'A new project name'
|
||||||
input = screen.getByLabelText('New Name') as HTMLButtonElement
|
const input = (await screen.findByLabelText(
|
||||||
|
'New Name'
|
||||||
|
)) as HTMLButtonElement
|
||||||
|
const oldName = input.value
|
||||||
fireEvent.change(input, {
|
fireEvent.change(input, {
|
||||||
target: { value: newProjectName },
|
target: { value: newProjectName },
|
||||||
})
|
})
|
||||||
|
|
||||||
confirmButton = within(modal).getByText<HTMLInputElement>('Rename')
|
const confirmButton =
|
||||||
|
within(modal).getByText<HTMLInputElement>('Rename')
|
||||||
expect(confirmButton.disabled).to.be.false
|
expect(confirmButton.disabled).to.be.false
|
||||||
fireEvent.click(confirmButton)
|
fireEvent.click(confirmButton)
|
||||||
|
|
||||||
|
@ -576,11 +591,13 @@ describe('<ProjectListRoot />', function () {
|
||||||
).to.be.true
|
).to.be.true
|
||||||
)
|
)
|
||||||
|
|
||||||
screen.findByText(newProjectName)
|
const table = await screen.findByRole('table')
|
||||||
expect(screen.queryByText(oldName)).to.be.null
|
within(table).getByText(newProjectName)
|
||||||
|
expect(within(table).queryByText(oldName)).to.be.null
|
||||||
|
|
||||||
const allCheckboxes =
|
const allCheckboxes = await within(
|
||||||
screen.getAllByRole<HTMLInputElement>('checkbox')
|
table
|
||||||
|
).findAllByRole<HTMLInputElement>('checkbox')
|
||||||
const allCheckboxesChecked = allCheckboxes.filter(c => c.checked)
|
const allCheckboxesChecked = allCheckboxes.filter(c => c.checked)
|
||||||
expect(allCheckboxesChecked.length).to.equal(0)
|
expect(allCheckboxesChecked.length).to.equal(0)
|
||||||
})
|
})
|
||||||
|
|
|
@ -109,7 +109,6 @@ describe('<ProjectListTable />', function () {
|
||||||
// Action Column
|
// Action Column
|
||||||
// temporary count tests until we add filtering for archived/trashed
|
// temporary count tests until we add filtering for archived/trashed
|
||||||
const copyButtons = screen.getAllByLabelText('Copy')
|
const copyButtons = screen.getAllByLabelText('Copy')
|
||||||
screen.debug()
|
|
||||||
expect(copyButtons.length).to.equal(currentProjects.length)
|
expect(copyButtons.length).to.equal(currentProjects.length)
|
||||||
const downloadButtons = screen.getAllByLabelText('Download')
|
const downloadButtons = screen.getAllByLabelText('Download')
|
||||||
expect(downloadButtons.length).to.equal(currentProjects.length)
|
expect(downloadButtons.length).to.equal(currentProjects.length)
|
||||||
|
|
Loading…
Reference in a new issue