screenright-client 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +1 -1
- package/src/index.ts +46 -8
package/package.json
CHANGED
package/src/index.ts
CHANGED
@@ -2,6 +2,7 @@ import * as fs from 'fs'
|
|
2
2
|
import { Page } from '@playwright/test'
|
3
3
|
import fetch from 'node-fetch'
|
4
4
|
import process from 'node:process'
|
5
|
+
import FormData from 'form-data'
|
5
6
|
|
6
7
|
type ScreenshotItemAttribute = {
|
7
8
|
key: string
|
@@ -19,15 +20,25 @@ const tmpDir = 'screenright/tmp'
|
|
19
20
|
const result: Result = { screenshotItemAttributes: [] }
|
20
21
|
|
21
22
|
let deploymentId: string | null = null
|
23
|
+
const deploymentToken: string = process.env.SCREENRIGHT_DEPLOYMENT_TOKEN || ''
|
22
24
|
|
23
25
|
const baseUrl = () => {
|
24
26
|
return `${process.env.SCREENRIGHT_ENDPOINT}/client_api`
|
25
27
|
}
|
26
28
|
|
29
|
+
const errorOccurred = (message: string) => {
|
30
|
+
console.error('[ScreenRight] Error occurred', message)
|
31
|
+
deploymentId = null
|
32
|
+
}
|
33
|
+
|
27
34
|
export const initializeScreenwright = async () => {
|
28
35
|
|
29
36
|
const diagramId = process.env.SCREENRIGHT_DIAGRAM_ID
|
30
|
-
|
37
|
+
if (!diagramId || !deploymentToken) {
|
38
|
+
errorOccurred('Not set require environments.')
|
39
|
+
return
|
40
|
+
}
|
41
|
+
|
31
42
|
try {
|
32
43
|
const response = await fetch(`${baseUrl()}/diagrams/${diagramId}/deployments`, {
|
33
44
|
method: 'POST',
|
@@ -35,11 +46,15 @@ export const initializeScreenwright = async () => {
|
|
35
46
|
headers: { 'Content-Type': 'application/json' }
|
36
47
|
})
|
37
48
|
|
49
|
+
if (!response.ok) {
|
50
|
+
errorOccurred('Failed create deployment.')
|
51
|
+
}
|
52
|
+
|
38
53
|
const body = await response.text()
|
39
54
|
const json = JSON.parse(body)
|
40
55
|
deploymentId = json.id
|
41
56
|
} catch(e: any) {
|
42
|
-
|
57
|
+
errorOccurred(e.message)
|
43
58
|
}
|
44
59
|
}
|
45
60
|
|
@@ -56,10 +71,9 @@ export const finalize = async () => {
|
|
56
71
|
)
|
57
72
|
|
58
73
|
const diagramId = process.env.SCREENRIGHT_DIAGRAM_ID
|
59
|
-
const deploymentToken = process.env.SCREENRIGHT_DEPLOYMENT_TOKEN
|
60
74
|
await fetch(`${baseUrl()}/diagrams/${diagramId}/deployments/${deploymentId}/done_upload`, {
|
61
75
|
method: 'PUT',
|
62
|
-
body: JSON.stringify({ deployment_token: deploymentToken, screenshotItemAttributes: result.screenshotItemAttributes }),
|
76
|
+
body: JSON.stringify({ deployment_token: deploymentToken, blueprint: { screenshotItemAttributes: result.screenshotItemAttributes } }),
|
63
77
|
headers: { 'Content-Type': 'application/json' }
|
64
78
|
})
|
65
79
|
|
@@ -76,14 +90,38 @@ export const capture = async (
|
|
76
90
|
return
|
77
91
|
}
|
78
92
|
|
79
|
-
|
80
|
-
const
|
81
|
-
|
93
|
+
const fileName = `${key}.png`
|
94
|
+
const outPath = `${tmpDir}/${fileName}`
|
95
|
+
try {
|
96
|
+
fs.mkdirSync(tmpDir, { recursive: true })
|
97
|
+
const buffer = new Uint8Array(await page.screenshot({ path: outPath, fullPage: true }))
|
98
|
+
const formData = new FormData()
|
99
|
+
|
100
|
+
formData.append('file', fs.createReadStream(outPath))
|
101
|
+
|
102
|
+
const diagramId = process.env.SCREENRIGHT_DIAGRAM_ID
|
103
|
+
const response = await fetch(`${baseUrl()}/diagrams/${diagramId}/deployments/${deploymentId}/screenshot`, {
|
104
|
+
method: 'POST',
|
105
|
+
headers: {
|
106
|
+
'X-File-Key': key,
|
107
|
+
'X-Deployment-Token': deploymentToken
|
108
|
+
},
|
109
|
+
body: formData
|
110
|
+
})
|
111
|
+
|
112
|
+
if (!response.ok) {
|
113
|
+
errorOccurred('Faild screenshot upload')
|
114
|
+
return
|
115
|
+
}
|
116
|
+
} catch(e: any) {
|
117
|
+
errorOccurred(`capture: ${key}, ${outPath}, ${e.message}`)
|
118
|
+
return
|
119
|
+
}
|
82
120
|
|
83
121
|
const attribute: ScreenshotItemAttribute = {
|
84
122
|
key,
|
85
123
|
title,
|
86
|
-
src:
|
124
|
+
src: outPath,
|
87
125
|
childrens: [],
|
88
126
|
}
|
89
127
|
|