web-dev-qa-db-fra.com

Échec du rapporteur: élément non interactif

J'exécute un test E2E pour une application Angular 7.x. Le test s'exécute directement sur ma machine locale. Mais lorsque je le pousse sur le référentiel (GitLab), le pipeline échoue et lance erreur suivante:

PROFIL UTILISATEUR - Vérifier et modifier le PROFIL - Échec: élément non interactif (Info session: chrome = 71.0.3578.80) (Info pilote: chromedriver = 2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5), plateforme = Linux 4.14.74-coreos x86_64)

Cas de test:

it('USER PROFILE - Check and change PROFILE', () => {

    page.navigateTo();

    browser.sleep(1000);
    expect(page.getProfileEditTagName()).toMatch('app-edit-profile');

    expect(element(by.className('logged-as')).getText()).toBe( testEmail );


    browser.actions().mouseMove( element.all( by.id('editIcon-salutation') ).get(0)).click().perform().then(function () {
        browser.sleep(4000);

        element( by.className('mat-select-arrow') ).click().then(function () {

            browser.actions().mouseMove( element.all(by.className('option-value mat-option')).get(0)).click().perform();
            browser.sleep(1000);
            browser.actions().mouseMove( element.all( by.id('saveButton-salutation') ).get(0)).click().perform();
            browser.sleep(1000);

        });
    });

});

navigateTo() n'est qu'une méthode dans profile.po.ts:

navigateTo() {
    browser.get('/profileComponentUrl');
}

Ce qui me déroute et où je ne peux même pas localiser le bogue ou ce qui ne va pas, c'est que cela fonctionne bien localement. Mais une fois que j'ai poussé pour repo, il échoue exactement à ce cas de test. Un indice s'il vous plaît?

5
k.vincent

L'une des raisons que je comprends est le problème de défilement. Vous devez vérifier que l'élément s'affiche correctement ou non. Il peut être caché. Utilisez donc scrollToTop/scrollToElement/scrollToElementView etc. Vous pouvez écrire différentes méthodes de défilement qui correspondent mieux à la condition.

Une autre raison est le localisateur. Essayez de changer le localisateur, ne coupez pas trop le localisateur. Essayez simplement avec le localisateur CSS complet du corps, si cela fonctionne, coupez correctement. Un certain temps dans la console chrome console cela peut fonctionner mais pas avec le cas de test.

0
Athar