Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Installation_spec.js « specs « UI « tests - github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: bc24ec02480b00a2db9f6b580181c6d32bed9c14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*!
 * Piwik - free/libre analytics platform
 *
 * Installation screenshot tests.
 *
 * @link http://piwik.org
 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
 */
var fs = require('fs');

describe("Installation", function () {
    this.timeout(0);

    this.fixture = null;

    before(function () {
        testEnvironment.testUseMockAuth = 0;
        testEnvironment.configFileLocal = path.join(PIWIK_INCLUDE_PATH, "/tmp/test.config.ini.php");
        testEnvironment.dontUseTestConfig = true;
        testEnvironment.tablesPrefix = 'piwik_';
        testEnvironment.save();

        if (fs.exists(testEnvironment.configFileLocal)) {
            fs.remove(testEnvironment.configFileLocal);
        }
    });

    after(function () {
        delete testEnvironment.configFileLocal;
        delete testEnvironment.dontUseTestConfig;
        delete testEnvironment.tablesPrefix;
        delete testEnvironment.testUseMockAuth;
        testEnvironment.save();
    });

    it("should display an error message when trying to access a resource w/o a config.ini.php file", function (done) {
        expect.screenshot("access_no_config").to.be.capture(function (page) {
            page.load("?module=CoreHome&action=index&ignoreClearAllViewDataTableParameters=1");
        }, done);
    });

    it("should start the installation process when the index is visited w/o a config.ini.php file", function (done) {
        expect.screenshot("start").to.be.capture(function (page) {
            page.load("?ignoreClearAllViewDataTableParameters=1");
        }, done);
    });

    it("should display the system check page when next is clicked on the first page", function (done) {
        expect.screenshot("system_check").to.be.capture(function (page) {
            page.click('.next-step .btn');
        }, done);
    });

    var pageUrl;
    it("should have already created a tmp/sessions/index.htm file to prevent directory listing", function (done) {
        expect.screenshot('nothing_to_see_here').to.be.capture(function (page) {
            pageUrl = page.getCurrentUrl();

            // page.load will load by default the proxy ie. http://localhost/piwik/tests/PHPUnit/proxy/
            // but we need here to check in: http://localhost/piwik/tmp/sessions/
            page.load("../../../tmp/sessions/index.htm");

        }, done);
    });

    it("should display the database setup page when next is clicked on the system check page", function (done) {
        expect.screenshot("db_setup").to.be.capture(function (page) {
            page.load(pageUrl);

            page.click('.next-step .btn');
        }, done);
    });

    it("should fail when the next button is clicked and no database info is entered in the form", function (done) {
        expect.screenshot("db_setup_fail").to.be.capture(function (page) {
            page.click('.btn');
        }, done);
    });

    it("should display the tables created page when next is clicked on the db setup page w/ correct info entered in the form", function (done) {
        expect.screenshot("db_created").to.be.capture(function (page) {
            var dbInfo = testEnvironment.readDbInfoFromConfig();
            var username = dbInfo.username;
            var password = dbInfo.password;

            page.sendKeys('input[name=username]', username);

            if (password) {
                page.sendKeys('input[name=password]', password);
            }

            page.sendKeys('input[name=dbname]', 'newdb');
            page.click('.btn');
        }, done);
    });

    it("should display the superuser configuration page when next is clicked on the tables created page", function (done) {
        expect.screenshot("superuser").to.be.capture(function (page) {
            page.click('.next-step .btn');
        }, done);
    });

    var pageUrl, pageUrlDe;

    it("should un-select Professional Services newsletter checkbox when language is German", function (done) {
        expect.screenshot("superuser_de").to.be.capture(function (page) {
            pageUrl = page.getCurrentUrl();
            pageUrlDe = pageUrl + '&language=de'
            page.load(pageUrlDe);
        }, done);
    });

    it("should fail when incorrect information is entered in the superuser configuration page", function (done) {
        expect.screenshot("superuser_fail").to.be.capture(function (page) {
            page.load(pageUrl);
            page.click('.btn');
        }, done);
    });

    it("should display the setup a website page when next is clicked on the filled out superuser config page", function (done) {
        expect.screenshot("setup_website").to.be.capture(function (page) {
            page.sendKeys('input[name=login]', 'thesuperuser');
            page.sendKeys('input[name=password]', 'thepassword');
            page.sendKeys('input[name=password_bis]', 'thepassword');
            page.sendKeys('input[name=email]', 'hello@piwik.org');
            page.click('.btn');
            page.wait(3000);
        }, done);
    });

    it("should should fail when incorrect information is entered in the setup a website page", function (done) {
        expect.screenshot("setup_website_fail").to.be.capture(function (page) {
            page.click('.btn');
        }, done);
    });

    it("should display the javascript tracking page when correct information is entered in the setup website page and next is clicked", function (done) {
        expect.screenshot("js_tracking").to.be.capture(function (page) {
            page.sendKeys('input[name=siteName]', 'Serenity');
            page.evaluate(function () {
                // cannot use sendKeys since quickform does not use placeholder attribute
                $('input[name=url]').val('serenity.com');
                
                $('select[name=timezone]').val('Europe/Paris');
                $('select[name=ecommerce]').val('1');
            });
            page.click('.btn');
            page.wait(3000);

            // manually remove port in tracking code, since ui-test.php won't be using the correct INI config file
            page.evaluate(function () {
                $('pre').each(function () {
                    var html = $(this).html();
                    html = html.replace(/localhost\:[0-9]+/g, 'localhost');
                    $(this).html(html);
                });
            });
        }, done);
    });

    it("should display the congratulations page when next is clicked on the javascript tracking page", function (done) {
        expect.screenshot("congrats").to.be.capture(function (page) {
            page.click('.next-step .btn');
        }, done);
    });

    it("should continue to piwik after submitting on the privacy settings form in the congrats page", function (done) {
        expect.screenshot('login_form', 'Login').to.be.capture(function (page) {
            page.click('.btn');
        }, done);
    });
});