Fixed flaky admin test in Publish+Send Flow (#20463)

ref ONC-109

- Attempt to fix flaky Admin test, "Publish flow members enabled can
schedule publish+send"
- Adjusted the time calculation to the nearest minute to avoid
off-by-one minute errors
- Added `waitFor` to ensure elements are present and stable before
making assertions.
- Rounded the new scheduled date and time to the nearest minute to
maintain consistency
- Included extra `waitFor` and `settled` calls to allow time for UI
elements to fully load and reflect changes before assertions.
This commit is contained in:
Ronald Langeveld 2024-06-26 16:05:51 +07:00 committed by GitHub
parent df16fe1cf4
commit 6099a14082
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,6 +1,6 @@
import loginAsRole from '../../helpers/login-as-role'; import loginAsRole from '../../helpers/login-as-role';
import moment from 'moment-timezone'; import moment from 'moment-timezone';
import {blur, click, fillIn, find, findAll} from '@ember/test-helpers'; import {blur, click, fillIn, find, findAll, waitFor} from '@ember/test-helpers';
import {clickTrigger, removeMultipleOption, selectChoose} from 'ember-power-select/test-support/helpers'; import {clickTrigger, removeMultipleOption, selectChoose} from 'ember-power-select/test-support/helpers';
import {disableMailgun, enableMailgun} from '../../helpers/mailgun'; import {disableMailgun, enableMailgun} from '../../helpers/mailgun';
import {disableMembers, enableMembers} from '../../helpers/members'; import {disableMembers, enableMembers} from '../../helpers/members';
@ -332,22 +332,24 @@ describe('Acceptance: Publish flow', function () {
.text('Right now'); .text('Right now');
const siteTz = this.server.db.settings.findBy({key: 'timezone'}).value; const siteTz = this.server.db.settings.findBy({key: 'timezone'}).value;
const plus10 = moment().tz(siteTz).add(10, 'minutes').set({}); const plus10 = moment().tz(siteTz).add(10, 'minutes').startOf('minute');
await click('[data-test-setting="publish-at"] [data-test-setting-title]'); await click('[data-test-setting="publish-at"] [data-test-setting-title]');
await click('[data-test-radio="schedule"]'); await click('[data-test-radio="schedule"]');
// date + time inputs are shown, defaults to now+5 mins // date + time inputs are shown, defaults to now+5 mins
await waitFor('[data-test-setting="publish-at"] [data-test-date-time-picker-datepicker]');
expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-datepicker]'), 'datepicker').to.exist; expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-datepicker]'), 'datepicker').to.exist;
expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]'), 'initial datepicker value') expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]'), 'initial datepicker value')
.to.have.value(plus10.format('YYYY-MM-DD')); .to.have.value(plus10.format('YYYY-MM-DD'));
await waitFor('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]');
expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]'), 'time input').to.exist; expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]'), 'time input').to.exist;
expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]'), 'initial time input value') expect(find('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]'), 'initial time input value')
.to.have.value(plus10.format('HH:mm')); .to.have.value(plus10.format('HH:mm'));
// can set a new date and time // can set a new date and time
const newDate = moment().tz(siteTz).add(4, 'days').add(5, 'hours').set('second', 0); const newDate = moment().tz(siteTz).add(4, 'days').add(5, 'hours').startOf('minute');
await fillIn('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]', newDate.format('YYYY-MM-DD')); await fillIn('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]', newDate.format('YYYY-MM-DD'));
await blur('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]'); await blur('[data-test-setting="publish-at"] [data-test-date-time-picker-date-input]');
await fillIn('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]', newDate.format('HH:mm')); await fillIn('[data-test-setting="publish-at"] [data-test-date-time-picker-time-input]', newDate.format('HH:mm'));