Наложение навигации Vuetify нельзя закрыть с помощью .click () в TestCafe.

Я использую TestCafe для тестирования приложения Vue, которое использует панель навигации Vuetify. Когда ящик открыт, он создает серый оверлей поверх остальной части приложения. Я смогу щелкнуть эту накладку, чтобы закрыть ящик. Это не работает; ящик остается открытым, и накладка не уходит.

Однако, если я добавлю .debug(), разблокирую страницу и щелкну вручную, оверлей и ящик будут закрыты, как и ожидалось, и можно будет продолжить остальную часть теста.

Небольшой быстрый тест ниже демонстрирует проблему. Он использует пример из документации Vuetify в качестве приспособления, открывает ящик, щелкает оверлей и ожидает, что оверлей больше не существует. Это не удастся, потому что наложение остается видимым после щелчка.

import { Selector } from 'testcafe';

fixture `Vuetify navigation drawer`
    .page `https://vuetifyjs.com/en/components/navigation-drawers`

test('is closed when clicking the overlay', async t => {
    await t
        .click('a[href="#temporary"] + div + div div.v-sheet button')
        .click('div.v-overlay')
        //.debug(); // unlock & manual click on overlay will result in a pass
        .expect(Selector('div.v-overlay').exists).eql(false);
});

Эта тема казалась многообещающей, но возникшая ошибка была исправлена ​​2 года назад, и предлагаемый обходной путь добавления .hover() не работает.

Я пробовал Firefox 66 и Chrome 72 на MacOS 10.14 с testcafe v1.1.0.

Есть идеи, почему щелчок по оверлею не работает и что я могу сделать, чтобы это исправить?


person GJP    schedule 08.03.2019    source источник
comment
Если я не ошибаюсь, похоже, что TestCafe некорректно обрабатывает такие события щелчка. Может быть, вы могли бы открыть проблему в TestCafe   -  person hdorgeval    schedule 09.03.2019


Ответы (1)


Причина проблемы в том, что Vuetify использует некоторые проверки события .isTrusted.

Поскольку TestCafe внутренне использует метод dispatchEvent, свойство event.isTrusted возвращает false, в то время как Vuetify ожидает получить значение true.

На данный момент я могу только порекомендовать вам удалить оверлей с помощью ClientFunctions.

У нас есть планы изменить наш механизм обработки событий. Следите за нашим прогрессом в решении # 2543 проблемы.

person Alex Kamaev    schedule 11.03.2019