@applitools/eyes-playwright 1.41.0 → 1.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,85 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.41.1](https://github.com/Applitools-Dev/sdk/compare/js/eyes-playwright@1.41.0...js/eyes-playwright@1.41.1) (2025-11-09)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* resolve html-report iframe flickering in dark mode ([#3324](https://github.com/Applitools-Dev/sdk/issues/3324)) ([3d31a90](https://github.com/Applitools-Dev/sdk/commit/3d31a90838148e93f84e7cf24ec1da25bb247140))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* @applitools/utils bumped to 1.13.0
|
|
14
|
+
#### Features
|
|
15
|
+
|
|
16
|
+
* restart cache and keepalive | FLD-3773 ([#3326](https://github.com/Applitools-Dev/sdk/issues/3326)) ([0fd12ca](https://github.com/Applitools-Dev/sdk/commit/0fd12ca703b4546560b563076a38f9ada24acc75))
|
|
17
|
+
* @applitools/dom-snapshot bumped to 4.15.0
|
|
18
|
+
#### Features
|
|
19
|
+
|
|
20
|
+
* add support for adopted stylesheets with nesting | FLD-3212 ([#3325](https://github.com/Applitools-Dev/sdk/issues/3325)) ([8587926](https://github.com/Applitools-Dev/sdk/commit/8587926b0d6ef820cfbd8f89ddb062a3d77f65ab))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
* @applitools/dom-capture bumped to 11.6.6
|
|
25
|
+
#### Performance Improvements
|
|
26
|
+
|
|
27
|
+
* remove dynamic loading of Dom capture and Dom snapshot ([#3322](https://github.com/Applitools-Dev/sdk/issues/3322)) ([7d15ee9](https://github.com/Applitools-Dev/sdk/commit/7d15ee98d5d39c7e478b6bfe3e14b8eea93937e5))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
* @applitools/socket bumped to 1.3.6
|
|
32
|
+
|
|
33
|
+
* @applitools/req bumped to 1.8.5
|
|
34
|
+
|
|
35
|
+
* @applitools/spec-driver-webdriver bumped to 1.5.1
|
|
36
|
+
|
|
37
|
+
* @applitools/spec-driver-playwright bumped to 1.7.7
|
|
38
|
+
|
|
39
|
+
* @applitools/spec-driver-puppeteer bumped to 1.6.7
|
|
40
|
+
|
|
41
|
+
* @applitools/nml-client bumped to 1.11.10
|
|
42
|
+
|
|
43
|
+
* @applitools/ufg-client bumped to 1.18.1
|
|
44
|
+
|
|
45
|
+
* @applitools/core-base bumped to 1.29.0
|
|
46
|
+
#### Features
|
|
47
|
+
|
|
48
|
+
* restart cache and keepalive | FLD-3773 ([#3326](https://github.com/Applitools-Dev/sdk/issues/3326)) ([0fd12ca](https://github.com/Applitools-Dev/sdk/commit/0fd12ca703b4546560b563076a38f9ada24acc75))
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
* @applitools/core bumped to 4.52.0
|
|
53
|
+
#### Features
|
|
54
|
+
|
|
55
|
+
* restart cache and keepalive | FLD-3773 ([#3326](https://github.com/Applitools-Dev/sdk/issues/3326)) ([0fd12ca](https://github.com/Applitools-Dev/sdk/commit/0fd12ca703b4546560b563076a38f9ada24acc75))
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
#### Performance Improvements
|
|
59
|
+
|
|
60
|
+
* remove dynamic loading of Dom capture and Dom snapshot ([#3322](https://github.com/Applitools-Dev/sdk/issues/3322)) ([7d15ee9](https://github.com/Applitools-Dev/sdk/commit/7d15ee98d5d39c7e478b6bfe3e14b8eea93937e5))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
* @applitools/logger bumped to 2.2.5
|
|
65
|
+
|
|
66
|
+
* @applitools/image bumped to 1.2.4
|
|
67
|
+
|
|
68
|
+
* @applitools/driver bumped to 1.24.1
|
|
69
|
+
|
|
70
|
+
* @applitools/spec-driver-selenium bumped to 1.7.7
|
|
71
|
+
|
|
72
|
+
* @applitools/screenshoter bumped to 3.12.8
|
|
73
|
+
|
|
74
|
+
* @applitools/tunnel-client bumped to 1.11.3
|
|
75
|
+
|
|
76
|
+
* @applitools/ec-client bumped to 1.12.12
|
|
77
|
+
|
|
78
|
+
* @applitools/eyes bumped to 1.36.15
|
|
79
|
+
|
|
80
|
+
* @applitools/test-server bumped to 1.3.4
|
|
81
|
+
|
|
82
|
+
|
|
3
83
|
## [1.41.0](https://github.com/Applitools-Dev/sdk/compare/js/eyes-playwright@1.40.7...js/eyes-playwright@1.41.0) (2025-11-03)
|
|
4
84
|
|
|
5
85
|
|
|
@@ -4,36 +4,170 @@
|
|
|
4
4
|
*
|
|
5
5
|
* This module provides functionality to create mock iframe elements that simulate
|
|
6
6
|
* the Eyes test result viewer without actually loading the full iframe. This is
|
|
7
|
-
* useful for testing and development purposes
|
|
7
|
+
* useful for testing and development purposes, including testing visual appearance
|
|
8
|
+
* during CSS loading phases.
|
|
8
9
|
*/
|
|
9
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
11
|
exports.createMockIframe = void 0;
|
|
12
|
+
/**
|
|
13
|
+
* CSS content that will be loaded after a 1-second delay
|
|
14
|
+
* This simulates the delayed loading behavior to test visual appearance during loading
|
|
15
|
+
*/
|
|
16
|
+
const MOCK_CSS = `
|
|
17
|
+
body {
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 20px;
|
|
20
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
21
|
+
transition: all 0.3s ease;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.mock-container {
|
|
25
|
+
max-width: 600px;
|
|
26
|
+
background: rgba(255, 255, 255, 0.1);
|
|
27
|
+
backdrop-filter: blur(10px);
|
|
28
|
+
border-radius: 12px;
|
|
29
|
+
padding: 30px;
|
|
30
|
+
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
h3 {
|
|
34
|
+
margin: 0 0 20px 0;
|
|
35
|
+
font-size: 24px;
|
|
36
|
+
font-weight: 600;
|
|
37
|
+
border-bottom: 2px solid rgba(255, 255, 255, 0.3);
|
|
38
|
+
padding-bottom: 10px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.info-item {
|
|
42
|
+
margin-bottom: 12px;
|
|
43
|
+
padding: 8px;
|
|
44
|
+
background: rgba(255, 255, 255, 0.05);
|
|
45
|
+
border-radius: 6px;
|
|
46
|
+
animation: slideIn 0.3s ease forwards;
|
|
47
|
+
opacity: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.info-item:nth-child(1) { animation-delay: 0.1s; }
|
|
51
|
+
.info-item:nth-child(2) { animation-delay: 0.2s; }
|
|
52
|
+
.info-item:nth-child(3) { animation-delay: 0.3s; }
|
|
53
|
+
.info-item:nth-child(4) { animation-delay: 0.4s; }
|
|
54
|
+
.info-item:nth-child(5) { animation-delay: 0.5s; }
|
|
55
|
+
.info-item:nth-child(6) { animation-delay: 0.6s; }
|
|
56
|
+
.info-item:nth-child(7) { animation-delay: 0.7s; }
|
|
57
|
+
|
|
58
|
+
@keyframes slideIn {
|
|
59
|
+
to {
|
|
60
|
+
opacity: 1;
|
|
61
|
+
transform: translateX(0);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
strong {
|
|
66
|
+
opacity: 0.9;
|
|
67
|
+
font-weight: 600;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.link-container {
|
|
71
|
+
margin-top: 20px;
|
|
72
|
+
padding-top: 20px;
|
|
73
|
+
border-top: 1px solid rgba(255, 255, 255, 0.2);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
a {
|
|
77
|
+
text-decoration: none;
|
|
78
|
+
padding: 10px 20px;
|
|
79
|
+
background: rgba(255, 255, 255, 0.2);
|
|
80
|
+
border-radius: 6px;
|
|
81
|
+
display: inline-block;
|
|
82
|
+
transition: all 0.2s ease;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
a:hover {
|
|
86
|
+
background: rgba(255, 255, 255, 0.3);
|
|
87
|
+
transform: translateY(-2px);
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
11
90
|
/**
|
|
12
91
|
* Creates a mock iframe element displaying Eyes test result information
|
|
92
|
+
* Uses the srcdoc attribute for inline HTML content and delays CSS loading
|
|
93
|
+
* to test visual appearance during loading phases
|
|
94
|
+
*
|
|
13
95
|
* @param result - The Eyes test result to display
|
|
14
|
-
* @returns
|
|
96
|
+
* @returns HTMLIFrameElement with mock content
|
|
15
97
|
*/
|
|
16
98
|
function createMockIframe(result) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
99
|
+
const iframe = document.createElement('iframe');
|
|
100
|
+
iframe.classList.add('eyes-session-result', 'eyes-mock-iframe');
|
|
101
|
+
iframe.setAttribute('value', result.id);
|
|
102
|
+
iframe.style.visibility = 'hidden';
|
|
103
|
+
iframe.style.opacity = '0';
|
|
104
|
+
// Initial HTML content without styling (to show unstyled phase)
|
|
105
|
+
const htmlContent = `
|
|
106
|
+
<!DOCTYPE html>
|
|
107
|
+
<html>
|
|
108
|
+
<head>
|
|
109
|
+
<meta name="color-scheme" content="light dark">
|
|
110
|
+
<meta charset="UTF-8">
|
|
111
|
+
<style id="loading-style">
|
|
112
|
+
body {
|
|
113
|
+
margin: 0;
|
|
114
|
+
padding: 20px;
|
|
115
|
+
font-family: monospace;
|
|
116
|
+
}
|
|
117
|
+
.loading-indicator {
|
|
118
|
+
font-size: 14px;
|
|
119
|
+
margin-bottom: 10px;
|
|
120
|
+
}
|
|
121
|
+
</style>
|
|
122
|
+
</head>
|
|
123
|
+
<body>
|
|
124
|
+
<div class="loading-indicator">Loading styles...</div>
|
|
125
|
+
<div class="mock-container">
|
|
126
|
+
<h3>Mock Eyes Iframe</h3>
|
|
127
|
+
<div class="info-item"><strong>Session ID:</strong> ${result.id}</div>
|
|
128
|
+
<div class="info-item"><strong>Status:</strong> ${result.status}</div>
|
|
129
|
+
<div class="info-item"><strong>Browser:</strong> ${result.hostApp}</div>
|
|
130
|
+
<div class="info-item"><strong>Viewport:</strong> ${result.hostDisplaySize.width}x${result.hostDisplaySize.height}</div>
|
|
131
|
+
<div class="info-item"><strong>Steps:</strong> ${result.steps}</div>
|
|
132
|
+
<div class="info-item"><strong>Is New:</strong> ${result.isNew}</div>
|
|
133
|
+
<div class="info-item"><strong>Has Differences:</strong> ${result.isDifferent}</div>
|
|
134
|
+
<div class="link-container">
|
|
135
|
+
<a href="${result.appUrls.session}" target="_blank">
|
|
136
|
+
View in Eyes Dashboard →
|
|
137
|
+
</a>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
<script>
|
|
141
|
+
// Simulate CSS loading after 1 second
|
|
142
|
+
setTimeout(function() {
|
|
143
|
+
// Remove loading indicator
|
|
144
|
+
const loadingIndicator = document.querySelector('.loading-indicator');
|
|
145
|
+
if (loadingIndicator) {
|
|
146
|
+
loadingIndicator.remove();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Remove initial loading styles
|
|
150
|
+
const loadingStyle = document.getElementById('loading-style');
|
|
151
|
+
if (loadingStyle) {
|
|
152
|
+
loadingStyle.remove();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Add the main styles
|
|
156
|
+
const styleElement = document.createElement('style');
|
|
157
|
+
styleElement.textContent = ${JSON.stringify(MOCK_CSS)};
|
|
158
|
+
document.head.appendChild(styleElement);
|
|
159
|
+
}, 500);
|
|
160
|
+
</script>
|
|
161
|
+
</body>
|
|
162
|
+
</html>
|
|
36
163
|
`;
|
|
37
|
-
|
|
164
|
+
iframe.srcdoc = htmlContent;
|
|
165
|
+
iframe.onload = () => {
|
|
166
|
+
// Show iframe after load with a smooth transition
|
|
167
|
+
iframe.style.visibility = 'visible';
|
|
168
|
+
iframe.style.opacity = '1';
|
|
169
|
+
};
|
|
170
|
+
// Show iframe after it's loaded with a smooth transition
|
|
171
|
+
return iframe;
|
|
38
172
|
}
|
|
39
173
|
exports.createMockIframe = createMockIframe;
|
|
@@ -192,11 +192,15 @@ class TestDetailUI {
|
|
|
192
192
|
const iframe = document.createElement('iframe');
|
|
193
193
|
iframe.classList.add('eyes-session-result');
|
|
194
194
|
iframe.setAttribute('value', result.id);
|
|
195
|
+
iframe.style.visibility = 'hidden';
|
|
196
|
+
iframe.style.opacity = '0';
|
|
195
197
|
const url = (0, urlManager_js_1.fixEyesUrl)(result.eyesServer.eyesServerUrl);
|
|
196
198
|
iframe.onload = () => {
|
|
197
199
|
const iframeUrl = `${url}app/html-report/index.html`;
|
|
198
200
|
iframe.contentWindow.postMessage({ call: 'sendValue', value: result }, iframeUrl);
|
|
199
201
|
iframe.classList.add('ready');
|
|
202
|
+
iframe.style.visibility = 'visible';
|
|
203
|
+
iframe.style.opacity = '1';
|
|
200
204
|
window.addEventListener('message', async (event) => {
|
|
201
205
|
if (event.origin !== url && `${event.origin}/` !== url)
|
|
202
206
|
return;
|