screenright-client 0.9.14 → 0.9.20

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.
Files changed (3) hide show
  1. package/README.md +55 -3
  2. package/package.json +1 -1
  3. package/src/index.ts +18 -9
package/README.md CHANGED
@@ -1,15 +1,67 @@
1
1
  # ScreenRight nodejs client library.
2
2
 
3
- ## Environments
3
+ ## Installation
4
+ ```
5
+ npm i screenright-client
6
+ ```
7
+
8
+ ## Setup environments
4
9
 
5
10
  ### Diagram Id
6
11
 
7
12
  ```
8
- SCREENRIGHT_DIAGRAM_ID
13
+ export SCREENRIGHT_DIAGRAM_ID=xxxxxxx
9
14
  ```
10
15
 
11
16
  ### Deployment Token
12
17
  ```
13
- SCREENRIGHT_DEPLOYMENT_TOKEN
18
+ export SCREENRIGHT_DEPLOYMENT_TOKEN=xxxxxxx
19
+ ```
20
+
21
+ ## Implementation
22
+
23
+ ### with "Playwright"
24
+
25
+ ```
26
+ import { capture, initializeScreenwright, finalize } from "screenright-client"
27
+
28
+ test("basic test", async ({ page }) => {
29
+
30
+ await initializeScreenwright() // The diagram ID specified in the environment variable is used.
31
+ // await initializeScreenwright(diagramId) <- The diagram ID specified in the argument is used.
32
+
33
+
34
+ // With the key home, capture with the title "Home Screen".
35
+ await capture(page, "home", "Home Screen")
36
+
37
+
38
+ // Created with "setting" as the parent screen.
39
+ await capture(
40
+ page,
41
+ "setting|projects",
42
+ "Project list",
43
+ "setting"
44
+ )
45
+
46
+
47
+ // Specify options.
48
+ await capture(
49
+ page,
50
+ "home",
51
+ "Home Screen",
52
+ undefined,
53
+ {
54
+ waitMilliseconds: 200, // wait before capturing.
55
+ clickLocatorSelector: `button:text("delete)`, // specify the element you want to click.
56
+ annotationText: "Click here!", // specify the annotation.
57
+ annotationDirection: "bottom", // Specifies the position of the annotation from the element.
58
+ paddingPixel: 4, // Specifies the padding for the border surrounding the element.
59
+ annotationTextColor: "red" | "blue" | "black" | "white" | "yellow" | "green"
60
+ description: "write a description"
61
+ }
62
+ )
63
+
64
+ await finalize()
65
+ })
14
66
  ```
15
67
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "screenright-client",
3
- "version": "0.9.14",
3
+ "version": "0.9.20",
4
4
  "description": "screenright's nodejs client library",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- import * as fs from 'fs'
2
1
  import { Page } from '@playwright/test'
3
2
  import fetch from 'node-fetch'
4
3
  import process from 'node:process'
@@ -35,9 +34,7 @@ const result: Result = { diagramId: "", screenshotItemAttributes: [], annotation
35
34
  let deploymentId: string | null = null
36
35
  const deploymentToken: string = process.env.SCREENRIGHT_DEPLOYMENT_TOKEN || ''
37
36
 
38
- const baseUrl = () => {
39
- return `${process.env.SCREENRIGHT_ENDPOINT}/client_api`
40
- }
37
+ const baseUrl = `${process.env.SCREENRIGHT_ENDPOINT || 'https://screenright.app'}/client_api`
41
38
 
42
39
  const errorOccurred = (message: string) => {
43
40
  console.error('[ScreenRight] Error occurred', message)
@@ -55,7 +52,7 @@ export const initializeScreenwright = async (diagramId?: string) => {
55
52
  result.diagramId = _diagramId
56
53
 
57
54
  try {
58
- const response = await fetch(`${baseUrl()}/diagrams/${result.diagramId}/deployments`, {
55
+ const response = await fetch(`${baseUrl}/diagrams/${result.diagramId}/deployments`, {
59
56
  method: 'POST',
60
57
  body: JSON.stringify({ deployment_token: deploymentToken }),
61
58
  headers: { 'Content-Type': 'application/json' }
@@ -78,9 +75,15 @@ export const finalize = async () => {
78
75
  return
79
76
  }
80
77
 
81
- await fetch(`${baseUrl()}/diagrams/${result.diagramId}/deployments/${deploymentId}/done_upload`, {
78
+ await fetch(`${baseUrl}/diagrams/${result.diagramId}/deployments/${deploymentId}/done_upload`, {
82
79
  method: 'PUT',
83
- body: JSON.stringify({ deployment_token: deploymentToken, blueprint: JSON.stringify({ screenshotItemAttributes: result.screenshotItemAttributes, annotations: result.annotations}) }),
80
+ body: JSON.stringify({
81
+ deployment_token: deploymentToken,
82
+ blueprint: JSON.stringify({
83
+ screenshotItemAttributes: result.screenshotItemAttributes,
84
+ annotations: result.annotations
85
+ })
86
+ }),
84
87
  headers: { 'Content-Type': 'application/json' }
85
88
  })
86
89
 
@@ -106,7 +109,13 @@ type CaptureOptions = {
106
109
  * @param {string} key - Unique key. cannot contain slashes.
107
110
  * @param {string} title - Page title.
108
111
  * @param {string|null} [parentKey] - Parent page key. Creates a hierarchical structure.
109
- * @param {{ waitMilliseconds: number = 0, clickLocatorSelector: string, annotationText: string = "", paddingPixel: number = 4, annotationDirection: AnnotationDirection = "bottom", AnnotationTextColor = "red" }} [options] - Wait milliseconds before capture.
112
+ * @param {{}} [options] -
113
+ * waitMilliseconds: number = 0, Wait milliseconds before capture.
114
+ * clickLocatorSelector: string,
115
+ * annotationText: string = "",
116
+ * paddingPixel: number = 4,
117
+ * annotationDirection: AnnotationDirection = "bottom",
118
+ * AnnotationTextColor = "red"
110
119
  */
111
120
  export const capture = async (
112
121
  page: Page,
@@ -156,7 +165,7 @@ export const capture = async (
156
165
 
157
166
  formData.append('file', buffer, fileName)
158
167
 
159
- const response = await fetch(`${baseUrl()}/diagrams/${result.diagramId}/deployments/${deploymentId}/screenshot`, {
168
+ const response = await fetch(`${baseUrl}/diagrams/${result.diagramId}/deployments/${deploymentId}/screenshot`, {
160
169
  method: 'POST',
161
170
  headers: {
162
171
  'X-File-Key': key,