Skip to content

Commit fe1649d

Browse files
authored
Merge pull request #20 from Countly/Refactor-and-content
Refactor and content
2 parents 0af8398 + 25dfc6d commit fe1649d

17 files changed

+3747
-1890
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ node_modules/
22
dist/
33
rollup.config.js
44
Countly.d.ts
5+
src/
6+
instrumented/
7+
coverage/
8+
.nyc_output/
59
```

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## 24.11.1
2+
3+
* Deprecated `initializeRatingWidgets` method, use `feedback.showRating` instead.
4+
* Deprecated `enableRatingWidgets` method, use `feedback.showRating` instead.
5+
* Added an interface `content` for Content feature methods:
6+
* `enterContentZone`, to start Content checks (Experimental!)
7+
* `exitContentZone`, to stop Content checks (Experimental!)
8+
19
## 24.11.0
210

311
* Mitigated an issue where SDK could try to send old stored offline mode data during init if `clear_stored_id` was true

Countly.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ if (isBrowser) {
174174
var key = parts.pop();
175175
var appKey = parts.pop();
176176
if (Countly.i && Countly.i[appKey]) {
177-
Countly.i[appKey].onStorageChange(key, e.newValue);
177+
Countly.i[appKey]._internals.onStorageChange(key, e.newValue);
178178
}
179179
});
180180
}

cypress.config.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
import { defineConfig } from "cypress";
2+
import { createRequire } from "module";
3+
4+
const require = createRequire(import.meta.url);
25

36
export default defineConfig({
47
e2e: {
58
setupNodeEvents(on, config) {
6-
// implement node event listeners here
9+
const codeCoverageTask = require('@cypress/code-coverage/task');
10+
codeCoverageTask(on, config);
11+
12+
// Include any other plugin code...
13+
14+
// IMPORTANT: Return the config object with any changed environment variables
15+
return config;
716
},
817
},
918
userAgent: "abcd",

cypress/e2e/remaining_requests.cy.js

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,41 +16,22 @@ describe("Remaining requests tests ", () => {
1616
it("Checks the requests for rr", () => {
1717
hp.haltAndClearStorage(() => {
1818
initMain(false);
19+
Countly.begin_session();
20+
Countly.end_session(undefined, true);
1921

20-
// We will expect 4 requests: health check, begin_session, end_session, orientation
21-
hp.interceptAndCheckRequests("POST", undefined, undefined, "?hc=*", "hc", (requestParams) => {
22-
const params = JSON.parse(requestParams.get("hc"));
23-
assert.isTrue(typeof params.el === "number");
24-
assert.isTrue(typeof params.wl === "number");
25-
assert.isTrue(typeof params.sc === "number");
26-
assert.isTrue(typeof params.em === "string");
27-
expect(requestParams.get("rr")).to.equal(null);
28-
});
2922
cy.wait(1000).then(() => {
30-
// Create a session
31-
Countly.begin_session();
32-
hp.interceptAndCheckRequests("POST", undefined, undefined, "?begin_session=*", "begin_session", (requestParams) => {
33-
expect(requestParams.get("begin_session")).to.equal("1");
34-
expect(requestParams.get("rr")).to.equal("3");
35-
expect(requestParams.get("av")).to.equal(av);
36-
});
37-
// End the session
38-
Countly.end_session(undefined, true);
39-
hp.interceptAndCheckRequests("POST", undefined, undefined, "?end_session=*", "end", (requestParams) => {
40-
expect(requestParams.get("end_session")).to.equal("1");
41-
expect(requestParams.get("rr")).to.equal("2");
42-
expect(requestParams.get("av")).to.equal(av);
43-
});
44-
hp.interceptAndCheckRequests("POST", undefined, undefined, undefined, "orientation", (requestParams) => {
45-
expect(JSON.parse(requestParams.get("events"))[0].key).to.equal("[CLY]_orientation");
46-
expect(requestParams.get("rr")).to.equal("1");
47-
expect(requestParams.get("av")).to.equal(av);
48-
});
49-
cy.wait(100).then(() => {
50-
cy.fetch_local_request_queue().then((rq) => {
51-
expect(rq.length).to.equal(0);
52-
});
53-
});
23+
var queues = Countly._internals.getLocalQueues();
24+
expect(queues.eventQ.length).to.equal(0);
25+
expect(queues.requestQ.length).to.equal(3);
26+
expect(queues.requestQ[0]["begin_session"]).to.equal(1);
27+
expect(queues.requestQ[1]["end_session"]).to.equal(1);
28+
expect(JSON.parse(queues.requestQ[2]["events"])[0].key).to.equal("[CLY]_orientation");
29+
30+
var requests = Countly._internals.testingGetRequests();
31+
expect(requests.length).to.equal(2);
32+
expect(requests[0].params["rr"]).to.equal(undefined);
33+
expect(requests[1].params["rr"]).to.equal(3);
34+
expect(requests[1].params["av"]).to.equal(av);
5435
});
5536
});
5637
});

cypress/e2e/sessions.cy.js

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,7 @@ describe("Browser session tests, auto", () => {
9797
describe("Browser session tests, manual 1", () => {
9898
it("Single sessions test with manual sessions", () => {
9999
cy.visit("./cypress/fixtures/session_test_manual_1.html?use_session_cookie=true");
100-
cy.contains("Start").click().wait(waitTime);
101-
cy.contains("Event").click().wait(300);
102-
cy.contains("End").click().wait(300);
100+
cy.wait(waitTime + 1000);
103101
cy.visit("./cypress/fixtures/base.html");
104102
cy.fetch_local_request_queue(app_key).then((rq) => {
105103
cy.log(rq);
@@ -109,10 +107,10 @@ describe("Browser session tests, manual 1", () => {
109107
cy.check_session(rq[0], undefined, undefined, app_key);
110108
// third object of the queue should be about session extension, also input the expected duration
111109
cy.check_session(rq[2], 5, undefined, app_key);
112-
// fourth object of the queue should be about event sent
113-
cy.check_event(JSON.parse(rq[3].events)[0], eventObj, undefined, false);
114110
// fifth object of the queue should be about session extension, also input the expected duration
115-
cy.check_session(rq[4], 1, undefined, app_key);
111+
cy.check_session(rq[3], 1, undefined, app_key);
112+
// fourth object of the queue should be about event sent
113+
cy.check_event(JSON.parse(rq[4].events)[0], eventObj, undefined, false);
116114
});
117115
});
118116
});
@@ -160,12 +158,7 @@ describe("Browser session tests, auto, no cookie", () => {
160158
describe("Browser session tests, manual 1, no cookie", () => {
161159
it("Single bounce test with manual sessions with no cookies", () => {
162160
cy.visit("./cypress/fixtures/session_test_manual_1.html");
163-
cy.contains("Start").click();
164-
cy.wait(waitTime);
165-
cy.contains("Event").click();
166-
cy.wait(300);
167-
cy.contains("End").click();
168-
cy.wait(300);
161+
cy.wait(waitTime + 1000);
169162
cy.visit("./cypress/fixtures/base.html");
170163
cy.fetch_local_request_queue(app_key).then((rq) => {
171164
cy.log(rq);
@@ -175,10 +168,10 @@ describe("Browser session tests, manual 1, no cookie", () => {
175168
cy.check_session(rq[0], undefined, undefined, app_key);
176169
// third object of the queue should be about session extension, also input the expected duration
177170
cy.check_session(rq[2], 5, undefined, app_key);
178-
// fourth object of the queue should be about event sent
179-
cy.check_event(JSON.parse(rq[3].events)[0], eventObj, undefined, false);
180171
// fifth object of the queue should be about session extension, also input the expected duration
181-
cy.check_session(rq[4], 1, true, app_key);
172+
cy.check_session(rq[3], 1, true, app_key);
173+
// fourth object of the queue should be about event sent
174+
cy.check_event(JSON.parse(rq[4].events)[0], eventObj, undefined, false);
182175
});
183176
});
184177
});

cypress/e2e/web_worker_queues.cy.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,17 @@ describe("Web Worker Local Queue Tests", () => {
1818
requestQueue = e.data.requestQ; // Array of requests
1919
eventQueue = e.data.eventQ; // Array of events
2020
myWorker.terminate(); // terminate worker
21-
21+
};
22+
cy.wait(3000).then(() => {
2223
// verify event queue
2324
expect(eventQueue.length).to.equal(2);
2425
cy.check_event(eventQueue[0], { key: "key" }, undefined, false);
2526
cy.check_view_event(eventQueue[1], "home_page", undefined, false);
26-
27+
2728
// verify request queue
2829
expect(requestQueue.length).to.equal(2);
2930
cy.check_session(requestQueue[0], undefined, false, false, true);
3031
cy.check_session(requestQueue[1], 0, false, false, false);
31-
};
32+
});
3233
});
3334
});

cypress/fixtures/session_test_manual_1.html

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,20 @@
3232
use_session_cookie: confObj.use_session_cookie || false,
3333
debug:true
3434
})
35+
Countly.begin_session();
36+
setTimeout(() => {
37+
Countly.add_event({
38+
key: "buttonClick",
39+
"segmentation": {
40+
"id": "id"
41+
}
42+
});
43+
Countly.end_session(undefined, true);
44+
}, 7000);
45+
46+
3547
</script>
3648
</head>
3749
<body>
38-
<script type='text/javascript' >
39-
function clickEvent(){
40-
window.Countly.add_event({
41-
key: "buttonClick",
42-
"segmentation": {
43-
"id": "id"
44-
}
45-
});
46-
}
47-
function start(){
48-
Countly.begin_session();
49-
}
50-
function end(){
51-
Countly.end_session(undefined, true);
52-
}
53-
</script>
54-
<button type="button" onclick="clickEvent()">Event</button>
55-
<button type="button" onclick="start()">Start</button>
56-
<button type="button" onclick="end()">End</button>
57-
<button type="button" onclick="windowClose()">Close</button>
5850
</body>
5951
</html>

cypress/support/e2e.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
// Import commands.js using ES2015 syntax:
1717
import './commands'
18+
import '@cypress/code-coverage/support'
1819

1920
// Alternatively you can use CommonJS syntax:
2021
// require('./commands')

examples/example_async.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
//provide countly initialization parameters
1414
Countly.app_key = "YOUR_APP_KEY";
1515
Countly.url = "https://your.server.ly"; //your server goes here
16+
Countly.debug = true;
17+
Countly.loadAPMScriptsAsync = true;
1618

1719
if(Countly.app_key === "YOUR_APP_KEY" || Countly.url === "https://your.server.ly"){
1820
console.warn("Please do not use default set of app key and server url")
@@ -23,6 +25,9 @@
2325
//track sessions automatically
2426
Countly.q.push(['track_sessions']);
2527

28+
//track performance automatically
29+
Countly.q.push(["track_performance"]);
30+
2631
//track sessions automatically
2732
Countly.q.push(['track_pageview']);
2833

0 commit comments

Comments
 (0)