Skip to content
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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

home work task #2

wants to merge 2 commits into from

Conversation

sirj77
Copy link

@sirj77 sirj77 commented Aug 7, 2020

  • если запускать тесты по отдельности, то все ок - вроде работаю, если запустить все вместе - некоторые фейлятся
  • непонятно с датой: не совсем понимаю зачем передавать аргумент туда, если Cypress.moment().format() должен вывести текущую корректную дату.

Попробовал передать:
const todaysDate = Cypress.moment("2020-08-05");
но результат аналогичный, в консоле выводит:
2020-08-04T00:00:00+03:00
И последующие тесты на Arrow Right/Down/Up фейляться.

Copy link
Owner

@dmtrKovalenko dmtrKovalenko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В общем очень хорошо написаны тесты! :)

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")
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Проблема с фейлом теста в этой строке. Дело в том что сам по себе moment мутабельный и вызывая .add() ты неявно мутируешь переменную todaysDate

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо, действительно!

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это проще было бы починить с помощью todaysDate.clone()

@@ -1,4 +1,7 @@
describe("Task 1 – DatePicker", () => {
const dateInNextMonth = Cypress.moment().add(1, "month");
const todaysDate = Cypress.moment();
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вообще по поводу даты:

Огромная проблема в работе с датой это то что она не предсказуема от слова совсем. Например если у нас переводят часы сегодня то тесты могут упасть. Поэтому лучшим решением было бы заморозить время на клиенте с помощью команды cy.clock

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, я видел как у тебя в таске сделано, не хотел повторять ) но понимаю, что здесь лучше всего именно clock и использовать.

Comment on lines 67 to 70
cy.log(todaysDate.format());
cy.log(todaysDate.add(-1, "day").format("MM/DD/YYYY"));
cy.log(dateInNextMonth.format());
});
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

логи в идеале нужно убирать из кода :)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

да, учител) я специально оставил для себя на первое время до ревью)


it("Arrow up", () => {
cy.get("body").type("{uparrow}");
cy.wait(300);
Copy link
Owner

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)

Copy link
Author

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 (- неделя). Как раз в таком случае тест у меня фейлился и сайпресс "не успевал" дождаться пока у меня будет ожидаемо выбранная дата. Как в данном случае быть без эмуляции ожидания, пока календарь переключиться на предыдущий месяц?

Copy link
Owner

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') тем самым сайпресс сам подождет пока выбранная дата появится и будет в фокусе

@sirj77
Copy link
Author

sirj77 commented Aug 11, 2020

@dmtrKovalenko привет, хотелось бы получить фидбек по последнем коммиту и в целом комментариям, которые я оставил. Спасибо

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants