在每个事件发生之前

时间:2015-10-20 14:08:23

标签: protractor

我正在尝试使用量角器为我们的某个页面进行e2e测试。 这些页面在周围系统的iframe中运行。

因此,为了能够测试我的页面,我必须在“它('概述打开......)之前做所有的事情。我不是说我必须按照我的方式去做。如果有的话更好的方法,请告诉我。

现在我的问题是“在”概述打开“中的测试之前运行了”errandClose“。 我做错了什么或误解了量角器是如何工作的。

describe('toplevel test', function() {
    var login = new loginPage();
    var role = new roleSelectionPage();
    var errand = new overViewAndErrand(login.getBaseUrl());

    beforeEach(function() {
        login.getPage(); //Goes to login page and logs in
    });

    it('should log in', function () {

        expect(element(by.model("therole")).isDisplayed());

        describe('Select role', function() {

            beforeEach(function () {
                role.selectRole(); //Selects role on page after login and ends up at next page
            });


            it('Role selected', function() {
                expect(element(by.css('a[href*="/OverviewNext"]')) !== undefined);

                describe('Open overview', function() {
                    beforeAll(function() {
                        errand.open('name of errand'); //Selects errand and clicks on button, iframe i opened
                    });

                    afterEach(function() {
                        errand.close(); // Leaves the iframe and clicks on remove errand
                    });

                    it ('Overview opened', function() {

                        describe('Test form', function() {
                            browser.sleep(5000); 
                            it ('test', function() {
                                browser.sleep(500);
                                element(by.model("modelvalue")).sendKeys('Ture Trana').then(function() {console.log('Ture Trana')});                                                             
                            });
                        });
                    });
                });
            });
        });
    });
});

作为对扁平问题的回应。

我希望能够运行我的测试是这样的

login.getPage();

role.select('role1');

errand.create();

begin
    test 1
     ...
    test n
end

errand.save();

role.select(role 2);

errand.open(previous errand);

begin
    test 1
     ...
    test n
end

login.logout();

所有selectRole,createErrand,openErrand都涉及到至少一个页面并单击某些按钮并在列表中选择。

2 个答案:

答案 0 :(得分:0)

你不应该在其中嵌套describe()()。

您应该在开始新测试之前关闭此测试 示例:在开始新描述之前应该关闭它。

it('Role selected', function() {
            expect(element(by.css('a[href*="/OverviewNext"]')) !== undefined);

答案 1 :(得分:0)

以下是嵌套描述的示例,适用于我。


    describe('overview page', () => {
      let hostUrl = configMock[0].response.data.URL;

      beforeAll(() => {
        //do magic
      });

      describe('all statement cards', () => {
        beforeAll(() => {
          browser.get(`${hostUrl}/z/y/1/g`);
          browser.waitForAngular();
        });

        describe('Campaign overview', () => {
          beforeEach(() => {
            //before each magic
          });
          it('has correct data for Delivered', () => {
            expect(delivered.getText()).toEqual('1.6k');
          });
        });
      });
    });

从这开始,我认为你可以根据自己的需要进行调整。