2015-11-30 27 views
10

Şu anda bir kullanıcı adı/parola giren ve 'oturum açmayı' tıklayan kısmi bir uçtan uca test var.İletki Oluşturucusu e2e Testleri Oturum Açma Yönlendirme

Bunu başarılı bir şekilde yapar, ancak "hesap portalına" veya "gösterge panosuna" yönlendirilmek yerine tarayıcıya giriş yapmamın yolu yerine "giriş yaptığınız için teşekkürler" sayfasında sona erer. \

Bu projeye yeni ama OAuth kullanıyoruz.

Ana soru: Bu, http alayına ihtiyaç duyuyor mu?

fazla ayrıntı:

spec.js

describe('login page', function() { 
    browser.driver.get('http://url.path/login'); 
    it('should render login page', function() { 

     // Checking the current url 
     var currentUrl = browser.driver.getCurrentUrl(); 
     expect(currentUrl).toMatch('/login'); 
    }); 
    it('should sign in', function() { 

     // Find page elements 
     var userNameField = browser.driver.findElement(By.id('username')); 
     var userPassField = browser.driver.findElement(By.id('password')); 
     var userLoginBtn = browser.driver.findElement(By.id('loginbtn')); 

     // Fill input fields 
     userNameField.sendKeys('[email protected]'); 
     userPassField.sendKeys('1234'); 

     // Ensure fields contain what we've entered 
     expect(userNameField.getAttribute('value')).toEqual('[email protected]'); 
     expect(userPassField.getAttribute('value')).toEqual('1234'); 

     // Click to sign in - waiting for Angular as it is manually bootstrapped. 
     userLoginBtn.click().then(function() { 
     browser.waitForAngular(); 
     expect(browser.driver.getCurrentUrl()).toMatch('/success'); 
     }, 10000); 
    }); 
}); 

hızla test penceresini tıklayın, ben başarıyla 'başarı' sayfaya ulaştığı görebilirsiniz - ama hiç yönlendirmez pano (el ile oturum açtığınızda, tarayıcıdan yönlendirir). Oturumun açık kalması için bu sınava nasıl devam edebilirim ve bir kullanıcı gibi gösterge panosuna erişebilir miyim?

// Yeni projeye, açısal ve ileticiye.

DÜZENLEME - özetleme bu biraz:

  • Ben
  • Açıölçer bulmalıdır /login sayfadaki testleri başlayacak ve kullanıcı adı ve şifre alanları doldurun, ardından iletkiye istiyorum Giriş
  • İletki, /thankyou sayfasını görmek için hemen giriş yapınız, sonra hemen kullanıcının adresine yönlendiriniz /dashboard pa ge
  • Belki bir adımı atlamıyorum, İletici testlerinde manuel olarak yeniden yönlendirmemiz gerekiyor mu?

(kullanıcı el tarayıcısı üzerinden giriş yaptığında onlar /teşekkürler sayfasını göremiyorum -.. O /pano hızlı bir yönlendirme var Açıölçer kontrol paneli sayfası bulmuyor

cevap

4

Yayınınız bilgilere sahip ancak bir varsayım yapmaya çalışacağım.

ben sayfa javaScript bir zaman aşımından sonra yönlendirme yapar "Giriş yaptıktan sayesinde" şüpheli

"Oturum Aç" ı tıkladıktan sonra, tarayıcı "giriş yaptığınız için teşekkürler" sayfasını yükler ve .then() için ikinci parametre hiçbir şey yapmadığından browser.waitForAngular() bu sayfada açısal olmadığından başarısız olur. tarayıcı /success sayfaya aldıktan sonra ve browser.waitForAngular() tetiklemek:

Sen (https://github.com/angular/protractor/issues/610 burada açıklanan) url değişikliği algılamak için makul bir zaman aşımı ile browser.driver.wait() gibi bir şey kullanmak için çalışmalısınız.

+0

Sana bağlantılı sayfadaki çözümünden kodu çalıştırdığınızda - iletki diyor: "Başarısız: tanımsız bir işlev değil". 'CompareCurrentUrl' işlevinde başarısız gibi görünüyor. Fonksiyonu nasıl kullandığımın bir örneği burada bulunabilir https://jsfiddle.net/s3tbfkwy/ – bruh

1

Açık bir bekleme kullanmayı denediniz mi?

return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /success/.test(url); 
     }); 
    }, 10000); 

Kodunuz böyle olacaktır:

// Click to sign in - waiting for Angular as it is manually bootstrapped. 
    userLoginBtn.click(); 
    return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /success/.test(url); 
     }); 
    }, 10000); 
+0

Geri dönüş çizgisi şu şekilde değiştirilmeli, yardımcı oldu: url === [DESIRED URL]; – Sam