-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
unskips application leave confirm & application deep links tests #168741
Changes from 16 commits
0feeb53
a49010c
5fc9a09
c61ef3d
4713ed5
15096a6
4c080ea
59995c8
cc6f57f
6f2f392
41e0dcb
06e050d
eb25bbc
d0ae7d2
16bb946
cd2f7a5
77ceb45
ca94111
18abd6b
fac7c79
1e08998
473c1fd
d725990
81579c4
8d1c8a2
0f5277f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide | |
const testSubjects = getService('testSubjects'); | ||
const retry = getService('retry'); | ||
const esArchiver = getService('esArchiver'); | ||
const log = getService('log'); | ||
|
||
const loadingScreenNotShown = async () => | ||
expect(await testSubjects.exists('kbnLoadingMessage')).to.be(false); | ||
|
@@ -35,12 +36,20 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide | |
const waitForUrlToBe = (pathname?: string, search?: string) => { | ||
const expectedUrl = getKibanaUrl(pathname, search); | ||
return retry.waitFor(`Url to be ${expectedUrl}`, async () => { | ||
return (await browser.getCurrentUrl()) === expectedUrl; | ||
const currentUrl = await browser.getCurrentUrl(); | ||
log?.debug(`waiting for currentUrl ${currentUrl} to be expectedUrl ${expectedUrl}`); | ||
return currentUrl === expectedUrl; | ||
}); | ||
}; | ||
|
||
// Failing: See https://github.com/elastic/kibana/issues/166893 | ||
describe.skip('application deep links navigation', function describeDeepLinksTests() { | ||
const navigateToAppLinks = async (subject: string) => { | ||
if (!(await testSubjects.exists(subject))) { | ||
log.debug(`side nav in app not in DOM`); | ||
} | ||
await testSubjects.click(subject); | ||
}; | ||
|
||
describe('application deep links navigation', function describeDeepLinksTests() { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @elastic/appex-sharedux I could use a hand in figuring out why tests using The |
||
before(async () => { | ||
await esArchiver.emptyKibanaIndex(); | ||
await PageObjects.common.navigateToApp('dl'); | ||
|
@@ -51,28 +60,29 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide | |
}); | ||
|
||
it('should navigate to page A when navlink is clicked', async () => { | ||
await appsMenu.clickLink('DL Page A'); | ||
await navigateToAppLinks('dlNavPageA'); | ||
await waitForUrlToBe('/app/dl/page-a'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppPageA'); | ||
await testSubjects.existOrFail('dlNavPageA'); | ||
}); | ||
|
||
it('should be able to use the back button to navigate back to previous deep link', async () => { | ||
await browser.goBack(); | ||
await waitForUrlToBe('/app/dl/home'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppHome'); | ||
await testSubjects.existOrFail('dlNavHome'); | ||
}); | ||
|
||
it('should navigate to nested page B when navlink is clicked', async () => { | ||
await appsMenu.clickLink('DL Page B'); | ||
await navigateToAppLinks('dlNavDeepPageB'); | ||
await waitForUrlToBe('/app/dl/page-b'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppPageB'); | ||
await testSubjects.existOrFail('dlNavDeepPageB'); | ||
}); | ||
|
||
it('should navigate to Home when navlink is clicked inside the defined category group', async () => { | ||
await appsMenu.clickLink('DL Home', { category: 'securitySolution' }); | ||
await navigateToAppLinks('dlAppHome'); | ||
await waitForUrlToBe('/app/dl/home'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppHome'); | ||
|
@@ -82,14 +92,14 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide | |
await testSubjects.click('dlNavDeepPageB'); | ||
await waitForUrlToBe('/app/dl/page-b'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppPageB'); | ||
await testSubjects.existOrFail('dlNavDeepPageB'); | ||
}); | ||
|
||
it('should navigate to nested page A using navigateToApp deepLinkId', async () => { | ||
await testSubjects.click('dlNavDeepPageAById'); | ||
await waitForUrlToBe('/app/dl/page-a'); | ||
await loadingScreenNotShown(); | ||
await testSubjects.existOrFail('dlAppPageA'); | ||
await testSubjects.existOrFail('dlNavPageA'); | ||
}); | ||
|
||
it('should not display hidden deep links', async () => { | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,26 +24,45 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide | |
const browser = getService('browser'); | ||
const appsMenu = getService('appsMenu'); | ||
const testSubjects = getService('testSubjects'); | ||
const log = getService('log'); | ||
const retry = getService('retry'); | ||
|
||
// Failing: See https://github.com/elastic/kibana/issues/75963 | ||
// Failing: See https://github.com/elastic/kibana/issues/166838 | ||
describe.skip('application using leave confirmation', () => { | ||
const waitForUrlToBe = (pathname?: string, search?: string) => { | ||
const expectedUrl = getKibanaUrl(pathname, search); | ||
return retry.waitFor(`Url to be ${expectedUrl}`, async () => { | ||
const currentUrl = await browser.getCurrentUrl(); | ||
log.debug(`waiting for currentUrl ${currentUrl} to be expectedUrl ${expectedUrl}`); | ||
return currentUrl === expectedUrl; | ||
}); | ||
}; | ||
|
||
describe('application using leave confirmation', () => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This test suite needed a complete overhaul to account for increased delays that various background tasks perform (ebt data collection, fleet setup etc). |
||
describe('when navigating to another app', () => { | ||
it('prevents navigation if user click cancel on the confirmation dialog', async () => { | ||
it('allows navigation if user click confirm on the confirmation dialog', async () => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I swapped the order to test if it's an actual test failure or if it's the first test in the suite that fails. Turns out it's the first test that fails in CI because the modal doesn't show. |
||
await PageObjects.common.navigateToApp('appleave1'); | ||
await appsMenu.clickLink('AppLeave 2'); | ||
await waitForUrlToBe('/app/appleave1'); | ||
|
||
await appsMenu.clickLink('AppLeave 2'); | ||
await testSubjects.existOrFail('appLeaveConfirmModal'); | ||
await PageObjects.common.clickCancelOnModal(false); | ||
expect(await browser.getCurrentUrl()).to.eql(getKibanaUrl('/app/appleave1')); | ||
await PageObjects.common.clickConfirmOnModal(); | ||
|
||
const currentUrl = await browser.getCurrentUrl(); | ||
const kibanaUrl = getKibanaUrl('/app/appleave2'); | ||
log.debug(`currentUrl ${currentUrl} kibanaUrl ${kibanaUrl}`); | ||
expect(currentUrl).to.eql(kibanaUrl); | ||
}); | ||
it('allows navigation if user click confirm on the confirmation dialog', async () => { | ||
it('prevents navigation if user click cancel on the confirmation dialog', async () => { | ||
await PageObjects.common.navigateToApp('appleave1'); | ||
await appsMenu.clickLink('AppLeave 2'); | ||
await waitForUrlToBe('/app/appleave1'); | ||
|
||
await appsMenu.clickLink('AppLeave 2'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Navigating to another app kicks off ebt metrics collection along with a host of other automated background tasks. We need to give those time to execute. |
||
await testSubjects.existOrFail('appLeaveConfirmModal'); | ||
await PageObjects.common.clickConfirmOnModal(); | ||
expect(await browser.getCurrentUrl()).to.eql(getKibanaUrl('/app/appleave2')); | ||
await PageObjects.common.clickCancelOnModal(false); | ||
|
||
const currentUrl = await browser.getCurrentUrl(); | ||
const kibanaUrl = getKibanaUrl('/app/appleave1'); | ||
log.debug(`currentUrl ${currentUrl} kibanaUrl ${kibanaUrl}`); | ||
expect(currentUrl).to.eql(kibanaUrl); | ||
}); | ||
}); | ||
}); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test plugins and test suites themselves weren't using consistent case, making it hard to debug if the tests fail. Inconsistent case can also easily be missed in future refactors so keep it simple: Use consistent case.