retold-data-service 2.0.16 → 2.0.18
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/.claude/launch.json +2 -2
- package/.quackage.json +19 -0
- package/package.json +13 -6
- package/source/services/data-cloner/DataCloner-Command-Sync.js +83 -50
- package/source/services/data-cloner/DataCloner-Command-WebUI.js +27 -10
- package/source/services/data-cloner/Retold-Data-Service-DataCloner.js +281 -4
- package/source/services/data-cloner/pict-app/Pict-Application-DataCloner-Configuration.json +9 -0
- package/source/services/data-cloner/pict-app/Pict-Application-DataCloner.js +102 -0
- package/source/services/data-cloner/pict-app/Pict-DataCloner-Bundle.js +6 -0
- package/source/services/data-cloner/pict-app/providers/Pict-Provider-DataCloner.js +998 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Connection.js +407 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Deploy.js +126 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Export.js +483 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Layout.js +390 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Schema.js +241 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Session.js +268 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-Sync.js +575 -0
- package/source/services/data-cloner/pict-app/views/PictView-DataCloner-ViewData.js +176 -0
- package/source/services/data-cloner/web/data-cloner.js +7952 -0
- package/source/services/data-cloner/web/data-cloner.js.map +1 -0
- package/source/services/data-cloner/web/data-cloner.min.js +2 -0
- package/source/services/data-cloner/web/data-cloner.min.js.map +1 -0
- package/source/services/data-cloner/web/index.html +17 -0
- package/test/DataCloner-Integration_tests.js +1205 -0
- package/test/DataCloner-Puppeteer_tests.js +502 -0
- package/test/integration-report.json +311 -0
- package/test/run-integration-tests.js +501 -0
- package/source/services/data-cloner/data-cloner-web.html +0 -2706
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
{
|
|
2
|
+
"timestamp": "2026-03-08T20:33:17.745Z",
|
|
3
|
+
"duration_ms": 54218,
|
|
4
|
+
"summary": {
|
|
5
|
+
"total": 35,
|
|
6
|
+
"passed": 32,
|
|
7
|
+
"failed": 0,
|
|
8
|
+
"skipped": 3
|
|
9
|
+
},
|
|
10
|
+
"storage_engines": {},
|
|
11
|
+
"suites": [
|
|
12
|
+
{
|
|
13
|
+
"name": "Data Cloner Integration",
|
|
14
|
+
"tests": [],
|
|
15
|
+
"duration_ms": 0
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "Connection Management",
|
|
19
|
+
"tests": [
|
|
20
|
+
{
|
|
21
|
+
"name": "Should show initial connection status",
|
|
22
|
+
"status": "pass",
|
|
23
|
+
"duration_ms": 1
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "Should connect SQLite via configure",
|
|
27
|
+
"status": "pass",
|
|
28
|
+
"duration_ms": 2
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "Should show connected after configure",
|
|
32
|
+
"status": "pass",
|
|
33
|
+
"duration_ms": 0
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"duration_ms": 3
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "Session Configuration",
|
|
40
|
+
"tests": [
|
|
41
|
+
{
|
|
42
|
+
"name": "Should configure session with retold-harness URL",
|
|
43
|
+
"status": "pass",
|
|
44
|
+
"duration_ms": 1
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "Should show session as configured",
|
|
48
|
+
"status": "pass",
|
|
49
|
+
"duration_ms": 9
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "Should reject session configure without ServerURL",
|
|
53
|
+
"status": "pass",
|
|
54
|
+
"duration_ms": 1
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"duration_ms": 11
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "Schema Fetch",
|
|
61
|
+
"tests": [
|
|
62
|
+
{
|
|
63
|
+
"name": "Should reconfigure session for fresh schema fetch",
|
|
64
|
+
"status": "pass",
|
|
65
|
+
"duration_ms": 1
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "Should fetch schema from retold-harness",
|
|
69
|
+
"status": "pass",
|
|
70
|
+
"duration_ms": 2
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"duration_ms": 3
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "Schema Deploy",
|
|
77
|
+
"tests": [
|
|
78
|
+
{
|
|
79
|
+
"name": "Should deploy all tables",
|
|
80
|
+
"status": "pass",
|
|
81
|
+
"duration_ms": 25
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"duration_ms": 25
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "Initial Sync (SQLite)",
|
|
88
|
+
"tests": [
|
|
89
|
+
{
|
|
90
|
+
"name": "Should start initial sync with record cap",
|
|
91
|
+
"status": "pass",
|
|
92
|
+
"duration_ms": 1007
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "All tables should have completed",
|
|
96
|
+
"status": "pass",
|
|
97
|
+
"duration_ms": 1
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "Should have a valid sync report",
|
|
101
|
+
"status": "pass",
|
|
102
|
+
"duration_ms": 3
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "Report tables should have timing data",
|
|
106
|
+
"status": "pass",
|
|
107
|
+
"duration_ms": 1
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
"duration_ms": 1012
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "Data Integrity",
|
|
114
|
+
"tests": [
|
|
115
|
+
{
|
|
116
|
+
"name": "Should fetch harness reference data",
|
|
117
|
+
"status": "pass",
|
|
118
|
+
"duration_ms": 9
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "Local book count should match sync (capped)",
|
|
122
|
+
"status": "pass",
|
|
123
|
+
"duration_ms": 2
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "Local Book 1 should match harness data",
|
|
127
|
+
"status": "pass",
|
|
128
|
+
"duration_ms": 1
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "Local author count should match sync (capped)",
|
|
132
|
+
"status": "pass",
|
|
133
|
+
"duration_ms": 0
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"duration_ms": 12
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"name": "Pre-Count and Live Status",
|
|
140
|
+
"tests": [
|
|
141
|
+
{
|
|
142
|
+
"name": "Should run a fresh pipeline and capture pre-count data",
|
|
143
|
+
"status": "pass",
|
|
144
|
+
"duration_ms": 7885
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"duration_ms": 7885
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"name": "Ongoing Sync",
|
|
151
|
+
"tests": [
|
|
152
|
+
{
|
|
153
|
+
"name": "Should run ongoing sync after initial",
|
|
154
|
+
"status": "pass",
|
|
155
|
+
"duration_ms": 1019
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "Ongoing sync report should show success",
|
|
159
|
+
"status": "pass",
|
|
160
|
+
"duration_ms": 1
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"duration_ms": 1020
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "Stop Sync",
|
|
167
|
+
"tests": [
|
|
168
|
+
{
|
|
169
|
+
"name": "Should be able to stop a sync in progress",
|
|
170
|
+
"status": "pass",
|
|
171
|
+
"duration_ms": 4063
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"duration_ms": 4063
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"name": "Reset",
|
|
178
|
+
"tests": [
|
|
179
|
+
{
|
|
180
|
+
"name": "Should reset the database",
|
|
181
|
+
"status": "pass",
|
|
182
|
+
"duration_ms": 2
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "Connection should still work after reset",
|
|
186
|
+
"status": "pass",
|
|
187
|
+
"duration_ms": 1
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
"duration_ms": 3
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "Storage Engine: MySQL",
|
|
194
|
+
"tests": [
|
|
195
|
+
{
|
|
196
|
+
"name": "Should sync via MySQL",
|
|
197
|
+
"status": "skip",
|
|
198
|
+
"duration_ms": 0
|
|
199
|
+
}
|
|
200
|
+
],
|
|
201
|
+
"duration_ms": 0
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "Storage Engine: PostgreSQL",
|
|
205
|
+
"tests": [
|
|
206
|
+
{
|
|
207
|
+
"name": "Should sync via PostgreSQL",
|
|
208
|
+
"status": "skip",
|
|
209
|
+
"duration_ms": 0
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"duration_ms": 0
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "Storage Engine: MSSQL",
|
|
216
|
+
"tests": [
|
|
217
|
+
{
|
|
218
|
+
"name": "Should sync via MSSQL",
|
|
219
|
+
"status": "skip",
|
|
220
|
+
"duration_ms": 0
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"duration_ms": 0
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"puppeteer": {
|
|
227
|
+
"available": true,
|
|
228
|
+
"suites": [
|
|
229
|
+
{
|
|
230
|
+
"name": "Data Cloner Web UI (Puppeteer)",
|
|
231
|
+
"tests": [],
|
|
232
|
+
"duration_ms": 0
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "Web UI Load",
|
|
236
|
+
"tests": [
|
|
237
|
+
{
|
|
238
|
+
"name": "Should load the data cloner page",
|
|
239
|
+
"status": "pass",
|
|
240
|
+
"duration_ms": 734
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"name": "Should display 7 accordion sections",
|
|
244
|
+
"status": "pass",
|
|
245
|
+
"duration_ms": 15
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"name": "Should show live status bar",
|
|
249
|
+
"status": "pass",
|
|
250
|
+
"duration_ms": 201
|
|
251
|
+
}
|
|
252
|
+
],
|
|
253
|
+
"duration_ms": 950
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"name": "Connection Section",
|
|
257
|
+
"tests": [
|
|
258
|
+
{
|
|
259
|
+
"name": "Should connect to SQLite via go button",
|
|
260
|
+
"status": "pass",
|
|
261
|
+
"duration_ms": 2218
|
|
262
|
+
}
|
|
263
|
+
],
|
|
264
|
+
"duration_ms": 2218
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"name": "Session, Schema, and Deploy Flow",
|
|
268
|
+
"tests": [
|
|
269
|
+
{
|
|
270
|
+
"name": "Should configure session via UI",
|
|
271
|
+
"status": "pass",
|
|
272
|
+
"duration_ms": 3019
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "Should fetch schema via UI",
|
|
276
|
+
"status": "pass",
|
|
277
|
+
"duration_ms": 2020
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"name": "Should deploy schema via UI",
|
|
281
|
+
"status": "pass",
|
|
282
|
+
"duration_ms": 5074
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"duration_ms": 10113
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"name": "Sync via Web UI",
|
|
289
|
+
"tests": [
|
|
290
|
+
{
|
|
291
|
+
"name": "Should start sync and complete successfully",
|
|
292
|
+
"status": "pass",
|
|
293
|
+
"duration_ms": 7184
|
|
294
|
+
}
|
|
295
|
+
],
|
|
296
|
+
"duration_ms": 7184
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
"name": "Live Status Display",
|
|
300
|
+
"tests": [
|
|
301
|
+
{
|
|
302
|
+
"name": "Should show progress information during sync",
|
|
303
|
+
"status": "pass",
|
|
304
|
+
"duration_ms": 16243
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
"duration_ms": 16243
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
}
|
|
311
|
+
}
|