-
Notifications
You must be signed in to change notification settings - Fork 18
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
home work task #2
base: master
Are you sure you want to change the base?
Conversation
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.
В общем очень хорошо написаны тесты! :)
cypress/integration/task.spec.ts
Outdated
cy.get("body").type("{leftarrow}{enter}"); | ||
cy.get("[data-mui-test='datepicker-example'] input").should( | ||
"have.value", | ||
todaysDate.add(-1, "day").format("MM/DD/YYYY") |
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.
Проблема с фейлом теста в этой строке. Дело в том что сам по себе moment мутабельный и вызывая .add() ты неявно мутируешь переменную todaysDate
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.
Спасибо, действительно!
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.
Это проще было бы починить с помощью todaysDate.clone()
cypress/integration/task.spec.ts
Outdated
@@ -1,4 +1,7 @@ | |||
describe("Task 1 – DatePicker", () => { | |||
const dateInNextMonth = Cypress.moment().add(1, "month"); | |||
const todaysDate = Cypress.moment(); |
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.
Вообще по поводу даты:
Огромная проблема в работе с датой это то что она не предсказуема от слова совсем. Например если у нас переводят часы сегодня то тесты могут упасть. Поэтому лучшим решением было бы заморозить время на клиенте с помощью команды cy.clock
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.
Да, я видел как у тебя в таске сделано, не хотел повторять ) но понимаю, что здесь лучше всего именно clock и использовать.
cypress/integration/task.spec.ts
Outdated
cy.log(todaysDate.format()); | ||
cy.log(todaysDate.add(-1, "day").format("MM/DD/YYYY")); | ||
cy.log(dateInNextMonth.format()); | ||
}); |
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.
логи в идеале нужно убирать из кода :)
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.
да, учител) я специально оставил для себя на первое время до ревью)
cypress/integration/task.spec.ts
Outdated
|
||
it("Arrow up", () => { | ||
cy.get("body").type("{uparrow}"); | ||
cy.wait(300); |
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.
Не уверен что этот wait тут необходим. Если хотелось сэмулировать реального пользователя то для этого есть параметр у .type("{uparrow}{enter}", { delay: 300 })
(https://docs.cypress.io/api/commands/type.html#Arguments)
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.
Я здесь хотел сказать, что если ты делаешь uparrow и у тебя текущая дата, скажем, 02.08.2020, то тебе (системе) нужно подождать, пока календарь переключиться на предыдущий месяц, что бы выбрать 26.07.2020 (- неделя). Как раз в таком случае тест у меня фейлился и сайпресс "не успевал" дождаться пока у меня будет ожидаемо выбранная дата. Как в данном случае быть без эмуляции ожидания, пока календарь переключиться на предыдущий месяц?
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.
Вот это тоже не самый правльный вариант – в сайпрессе у нас есть автоматическое ожидание. И поэтому тут у нас есть масса вариантов.
Самый просто это сделать cy.contains("August")
эта команда будет ждать пока на странице появится Август. А можно сделать ассерты таким образом чтобы ждать переключение месяца автоматически.
Например cy.findByLabelText("{you date}").shoul('be.focused')
тем самым сайпресс сам подождет пока выбранная дата появится и будет в фокусе
@dmtrKovalenko привет, хотелось бы получить фидбек по последнем коммиту и в целом комментариям, которые я оставил. Спасибо |
Попробовал передать:
const todaysDate = Cypress.moment("2020-08-05");
но результат аналогичный, в консоле выводит:
2020-08-04T00:00:00+03:00
И последующие тесты на Arrow Right/Down/Up фейляться.