Skip to content

Commit 71ad595

Browse files
authored
Merge pull request #6281 from Countly/QT-148-v3
[QT-148-v3] Wrote the app creation case
2 parents bfb6adf + 5296b4a commit 71ad595

File tree

10 files changed

+428
-12
lines changed

10 files changed

+428
-12
lines changed

frontend/express/public/core/app-management/templates/app-management.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,21 +216,21 @@ <h2 class="bu-mb-4" data-test-id="selected-app-name-title"> {{apps[selectedApp]
216216
<template v-slot:main>
217217
<div class="bu-mr-0 bu-is-flex bu-is-justify-content-flex-end bu-is-align-items-center cly-vue-user-selected" style="height: 100%;">
218218
<span class="selected-count-blue bu-pl-1 text-medium">
219-
<span style="background-color:#0166D6; color:white; padding:3px 7px; border-radius:4px;">{{compare(formScope.editedObject,apps[selectedApp]).length}}</span>
220-
<span v-if="compare(formScope.editedObject,apps[selectedApp]).length>1" class="bu-is-lowercase text-medium color-cool-gray-50 bu-pl-1">{{ i18n("common.diff-helper.changes-made") }}</span>
219+
<span data-test-id="number-of-changes" style="background-color:#0166D6; color:white; padding:3px 7px; border-radius:4px;">{{compare(formScope.editedObject,apps[selectedApp]).length}}</span>
220+
<span v-if="compare(formScope.editedObject,apps[selectedApp]).length>1" data-test-id="changes-has-been-made-label" class="bu-is-lowercase text-medium color-cool-gray-50 bu-pl-1">{{ i18n("common.diff-helper.changes-made") }}</span>
221221
<span v-else class="bu-is-lowercase text-medium color-cool-gray-50 bu-pl-1">{{ i18n("common.diff-helper.changes-made-single") }}</span>
222-
<span v-if="compare(formScope.editedObject,apps[selectedApp]).length>1" class="text-medium color-cool-gray-50">{{ i18n("common.diff-helper.keep") }}</span>
222+
<span v-if="compare(formScope.editedObject,apps[selectedApp]).length>1" data-test-id="do-you-wanna-keep-label" class="text-medium color-cool-gray-50">{{ i18n("common.diff-helper.keep") }}</span>
223223
<span v-else class="text-medium color-cool-gray-50">{{ i18n("common.diff-helper.keep-single") }}</span>
224224
</span>
225225
<span class="vertical-divider bu-mr-4 bu-ml-4"></span>
226-
<el-button skin="red" class="bu-mr-2" size="small" type="default" @click="save(formScope.editedObject)">
226+
<el-button data-test-id="save-changes-button" skin="red" class="bu-mr-2" size="small" type="default" @click="save(formScope.editedObject)">
227227
<i class="cly-io-16 cly-io cly-io-save-disc" style="font-size: larger;"></i>
228228
<span class="bu-ml-1">
229229
{{ i18n('dashboards.save-changes') }}
230230
</span>
231231
</el-button>
232232
<el-button class="x-button" @click="discardForm">
233-
<i class="cly-io-16 cly-io cly-io-x color-cool-gray-50"></i>
233+
<i data-test-id="close-button" class="cly-io-16 cly-io cly-io-x color-cool-gray-50"></i>
234234
</el-button>
235235
</div>
236236
</template>

frontend/express/public/javascripts/countly/vue/components/input.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@
328328
@keyup.enter="!option.group && handleItemClick(option)"\
329329
@click.stop="!option.group && handleItemClick(option)"\
330330
v-for="(option, idx) in searchedOptions">\
331-
<div class="cly-vue-listbox__item-content">\
331+
<div class="cly-vue-listbox__item-content" :data-test-id="testId + \'-\' + \'item\'">\
332332
<div class="bu-level">\
333333
<div class="bu-level-left">\
334334
<div v-if="!!$scopedSlots[\'option-prefix\']" class="cly-vue-listbox__item-prefix bu-mr-1">\
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import user from '../../../../fixtures/user.json';
2+
const navigationHelpers = require('../../../../support/navigations');
3+
const loginHelpers = require('../../../../lib/login/login');
4+
const appHelper = require('../../../../lib/dashboard/manage/apps/apps');
5+
const { generateAppsFixture } = require('../../../../fixtures/generators/apps');
6+
const { APP_TYPE } = require('../../../../support/constants');
7+
8+
describe('Create apps with different types such as Desktop, Mobile, and Web. ', () => {
9+
beforeEach(function() {
10+
navigationHelpers.goToLoginPage();
11+
loginHelpers.login(user.username, user.password);
12+
navigationHelpers.goToApplicationsPage();
13+
});
14+
15+
it('Create a mobile type app with icon.', function() {
16+
17+
const app = generateAppsFixture();
18+
appHelper.clickAddNewAppButton();
19+
appHelper.typeAppName(app.appName);
20+
appHelper.selectAppType(APP_TYPE.MOBILE);
21+
appHelper.selectCountry("Turkey");
22+
appHelper.clickCreateButton();
23+
24+
appHelper.searchApp(app.appName);
25+
appHelper.selectAppFromList();
26+
27+
appHelper.verifyCreatedApp({
28+
appName: app.appName,
29+
appType: APP_TYPE.MOBILE,
30+
country: "TR",
31+
timeZone: "Europe/Istanbul"
32+
});
33+
34+
//add icon case
35+
appHelper.uploadAppIcon(app.logoPath);
36+
});
37+
38+
it('Create a desktop type app without icon and update the name and app type.', function() {
39+
40+
const app = generateAppsFixture();
41+
appHelper.clickAddNewAppButton();
42+
appHelper.typeAppName(app.appName);
43+
appHelper.selectAppType(APP_TYPE.DESKTOP);
44+
appHelper.selectCountry("Turkey");
45+
appHelper.clickCreateButton();
46+
47+
appHelper.searchApp(app.appName);
48+
appHelper.verifyCreatedApp({
49+
appName: app.appName,
50+
appType: APP_TYPE.DESKTOP,
51+
country: "TR",
52+
timeZone: "Europe/Istanbul"
53+
});
54+
55+
//update app case
56+
const updatedApp = generateAppsFixture();
57+
58+
appHelper.clickEditButton();
59+
appHelper.typeAppName(updatedApp.appName);
60+
appHelper.selectAppType(APP_TYPE.MOBILE);
61+
appHelper.selectCountry("United Kingdom");
62+
appHelper.verifyEditPopupElements();
63+
appHelper.clickSaveChangesButton();
64+
65+
appHelper.searchApp(updatedApp.appName);
66+
appHelper.selectAppFromList();
67+
68+
appHelper.verifyCreatedApp({
69+
appName: updatedApp.appName,
70+
appType: APP_TYPE.MOBILE,
71+
country: "GB",
72+
timeZone: "Europe/Istanbul"
73+
});
74+
75+
appHelper.verifyChangesSavedNotification();
76+
});
77+
78+
it('Create a web type app without icon and delete it.', function() {
79+
80+
const app = generateAppsFixture();
81+
appHelper.clickAddNewAppButton();
82+
appHelper.typeAppName(app.appName);
83+
appHelper.selectAppType(APP_TYPE.WEB);
84+
appHelper.selectCountry("Turkey");
85+
appHelper.clickCreateButton();
86+
87+
appHelper.searchApp(app.appName);
88+
appHelper.verifyCreatedApp({
89+
appName: app.appName,
90+
appType: APP_TYPE.WEB,
91+
country: "TR",
92+
timeZone: "Europe/Istanbul"
93+
});
94+
95+
//delete app case
96+
appHelper.clickmoreOptionsButton();
97+
appHelper.clickDeleteAppOption();
98+
appHelper.verifyDeleteAppPopupElements();
99+
appHelper.clickYesDeleteButton();
100+
appHelper.searchApp(app.appName);
101+
appHelper.verifyAppShouldBeDeleted();
102+
103+
});
104+
});
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const { faker } = require('@faker-js/faker');
2+
3+
const generator = () => {
4+
5+
const appName = faker.lorem.words({ min: 1, max: 3 });
6+
const logoPath = 'testFiles/lowSizeTestImage.png';
7+
8+
return {
9+
appName,
10+
logoPath,
11+
};
12+
};
13+
14+
module.exports = {
15+
generateAppsFixture: () => {
16+
return generator();
17+
},
18+
};

ui-tests/cypress/fixtures/generators/generateFixtures.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ const { generateWidgetFixture } = require('./widgets');
55
const { generateWidgetsRatesFixture } = require('./widgetsRates');
66
const { generateAlertFixture } = require('./alerts');
77
const { generateUsersFixture } = require('./users');
8+
const { generateAppsFixture } = require('./apps');
9+
810

911
const BASE_DIR = path.join(__dirname, '../generated');
1012

@@ -16,6 +18,7 @@ const setupFolders = () => {
1618
fs.mkdirSync(path.join(BASE_DIR, 'widgetsRates'), { recursive: true });
1719
fs.mkdirSync(path.join(BASE_DIR, 'alerts'), { recursive: true });
1820
fs.mkdirSync(path.join(BASE_DIR, 'users'), { recursive: true });
21+
fs.mkdirSync(path.join(BASE_DIR, 'apps'), { recursive: true });
1922
};
2023

2124
const writeJson = (filePath, data) => {
@@ -31,6 +34,7 @@ const writeJson = (filePath, data) => {
3134
writeJson('/widgetsRates/widgetsRate.json', generateWidgetsRatesFixture());
3235
writeJson('/alerts/alert.json', generateAlertFixture());
3336
writeJson('/users/user.json', generateUsersFixture());
37+
writeJson('/apps/app.json', generateAppsFixture());
3438
})();
3539

3640
// node ./cypress/fixtures/generators/generateFixtures.js

ui-tests/cypress/lib/dashboard/feedback/ratings/widgets.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ const clickDontUseLogoRadioButton = () => {
541541
};
542542

543543
const uploadLogo = (logoPath) => {
544-
cy.uploadFile(feedbackRatingWidgetsPageElements.UPLOAD_FILE_DROPZONE, logoPath);
544+
cy.dragAndDropFile(feedbackRatingWidgetsPageElements.UPLOAD_FILE_DROPZONE, logoPath);
545545
};
546546

547547
const selectMainColor = (colorCode) => {

0 commit comments

Comments
 (0)