Функция щелчка в Spectron не щелкает

Я работаю над электронным (-nuxt) приложением. Сквозной тест переписан с помощью AVA + Spectron. Однако функция .click() не работает.

Я использовал этот шаблон: https://github.com/michalzaq12/electron-nuxt

Кажется, все работает, кроме простого нажатия кнопки.

<footer class="modal-card-foot">
  <button id="loginButton" class="button " type="button" @click="login">
    Login
  </button>
</footer>
test('app should login', async t => {
    let app = t.context.app
    await app.client.click('#loginButton')
})

Я получил следующее сообщение:

1 тест не пройден

приложение должно войти

Ошибка: тест завершен без выполнения каких-либо утверждений

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


person KingRazer    schedule 16.10.2019    source источник


Ответы (2)


В вашем тестовом примере вам следует дождаться отображения элемента на странице.

test('app should login', async t => {
    const ELEMENT_SELECTOR = '#loginButton'
    let app = t.context.app
     try {
      await app.client.nuxt.ready()
      await app.client.nuxt.navigate('/') //optional
      await app.client.waitForExist(ELEMENT_SELECTOR)
      await app.client.click(ELEMENT_SELECTOR)
      t.pass() //or other assertion
    } catch (e) {
      t.fail(e.message)
    }
})

person michalzaq12    schedule 24.10.2019

Ознакомьтесь с этим репо, которое является примером тестирования электронного приложения: https://github.com/StephenDavidson/electron-spectron-example

в частности, здесь они проверяют функциональность нажатия кнопки. Обратите внимание, как они импортируются на странице вверху. Search.js

const SearchPage = require('./page-objects/search.page');


Then near the bottom they test the functionality of click

  it('should search', async() => {
    const input = 'this is a test';
    await app.client.url(config.url)
      .setValue(SearchPage.searchField, input)
      .getValue(SearchPage.searchField)
      .should.eventually.equal(input)
      .click(SearchPage.searchButton)
      .element(SearchPage.searchResult)
      .should.eventually.exist;
  });

Посмотрите, поможет ли это вам продвинуться дальше.

person bowl_of_rice    schedule 19.11.2019