Skip to content

Commit dcb40bb

Browse files
committed
test replying in thread for chromatic and api diff
1 parent 6ffb87e commit dcb40bb

2 files changed

Lines changed: 49 additions & 34 deletions

File tree

.github/workflows/weekly-api-diff.yml

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ jobs:
148148
raise SystemExit(f"Missing required environment variables: {', '.join(missing)}")
149149
150150
today = os.environ['TODAY']
151-
channel = os.environ['SLACK_CHANNEL_ID']
151+
channel = os.environ.get('TEST_SLACK_ID') or os.environ['SLACK_CHANNEL_ID']
152152
snapshots_repo = os.environ['SNAPSHOTS_REPO']
153153
slack_token = os.environ['SLACK_TSDIFF_CHROMATIC_BOT_TOKEN']
154154
github_token = os.environ['GITHUB_TOKEN']
@@ -165,13 +165,31 @@ jobs:
165165
166166
new_release = os.environ.get('NEW_RELEASE') == 'true'
167167
168+
def post(text, thread_ts=None):
169+
payload = {"channel": channel, "text": text, "unfurl_links": False, "unfurl_media": False}
170+
if thread_ts:
171+
payload["thread_ts"] = thread_ts
172+
req = urllib.request.Request(
173+
'https://slack.com/api/chat.postMessage',
174+
data=json.dumps(payload).encode(),
175+
headers={
176+
'Authorization': f'Bearer {slack_token}',
177+
'Content-Type': 'application/json'
178+
}
179+
)
180+
resp = json.loads(urllib.request.urlopen(req).read())
181+
print("Slack response:", resp.get('ok'), resp.get('error', ''))
182+
if not resp.get('ok'):
183+
raise SystemExit(f"Slack error: {resp.get('error')}")
184+
return resp['message']['ts']
185+
168186
if vs_release_size == 0:
169-
message = f"📊 Weekly API Diff — {today}\n\nNo API changes detected vs last release — all pending changes have been included in a release."
187+
body = "No API changes detected vs last release — all pending changes have been included in a release."
170188
elif vs_last_week_size == 0 and not new_release:
171189
prev_ref = f"last diff ({prev_date}): {prev_url}" if prev_date else "last diff"
172-
message = f"📊 Weekly API Diff — {today}\n\nNo new API changes since {prev_ref}."
190+
body = f"No new API changes since {prev_ref}."
173191
elif new_release:
174-
message = f"📊 Weekly API Diff — {today}\n\nNew release since last diff — resetting baseline. Full diff vs release: {diff_url}\n\nReact ✅ if changes look expected, or 🚨 if something looks wrong."
192+
body = f"New release since last diff — resetting baseline. Full diff vs release: {diff_url}\n\nReact ✅ if changes look expected, or 🚨 if something looks wrong."
175193
else:
176194
# Read the already-processed delta saved by the shell step
177195
delta_path = f"{workspace}/snapshots/deltas/{today}.txt"
@@ -210,18 +228,8 @@ jobs:
210228
}
211229
)
212230
summary = json.loads(urllib.request.urlopen(req).read())['choices'][0]['message']['content']
213-
message = f"📊 Weekly API Diff — {today}\n\n{summary}\n\nWhat's new this week: {delta_url}\nFull diff vs release: {diff_url}\n\nReact ✅ if changes look expected, or 🚨 if something looks wrong."
214-
215-
req = urllib.request.Request(
216-
'https://slack.com/api/chat.postMessage',
217-
data=json.dumps({"channel": channel, "text": message}).encode(),
218-
headers={
219-
'Authorization': f'Bearer {slack_token}',
220-
'Content-Type': 'application/json'
221-
}
222-
)
223-
resp = json.loads(urllib.request.urlopen(req).read())
224-
print("Slack response:", resp.get('ok'), resp.get('error', ''))
225-
if not resp.get('ok'):
226-
raise SystemExit(f"Slack error: {resp.get('error')}")
231+
body = f"{summary}\n\nWhat's new this week: {delta_url}\nFull diff vs release: {diff_url}\n\nReact ✅ if changes look expected, or 🚨 if something looks wrong."
232+
233+
ts = post(f"📊 Weekly API Diff — {today}")
234+
post(f"📊 Weekly API Diff — {today}\n\n{body}", thread_ts=ts)
227235
PYEOF

.github/workflows/weekly-chromatic.yml

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ jobs:
6666
env:
6767
SLACK_TSDIFF_CHROMATIC_BOT_TOKEN: ${{ secrets.SLACK_TSDIFF_CHROMATIC_BOT_TOKEN }}
6868
SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
69+
TEST_SLACK_ID: ${{ secrets.TEST_SLACK_ID }}
6970
CHROMATIC_URL: ${{ needs.chromatic.outputs.build_url }}
7071
CHROMATIC_CODE: ${{ needs.chromatic.outputs.code }}
7172
CHROMATIC_FC_URL: ${{ needs.chromatic-fc.outputs.build_url }}
@@ -83,7 +84,7 @@ jobs:
8384
raise SystemExit(f"Missing required environment variables: {', '.join(missing)}")
8485
8586
today = date.today().isoformat()
86-
channel = os.environ['SLACK_CHANNEL_ID']
87+
channel = os.environ.get('TEST_SLACK_ID') or os.environ['SLACK_CHANNEL_ID']
8788
slack_token = os.environ['SLACK_TSDIFF_CHROMATIC_BOT_TOKEN']
8889
8990
def fmt(code, url):
@@ -93,23 +94,29 @@ jobs:
9394
return f"✅ | {url}"
9495
return f"⚠️ changes pending review | {url}"
9596
96-
message = "\n".join([
97-
f"📸 Weekly Chromatic — {today}",
98-
"",
97+
body = "\n".join([
9998
f"Chromatic: {fmt(os.environ['CHROMATIC_CODE'], os.environ['CHROMATIC_URL'])}",
10099
f"Forced Colors: {fmt(os.environ['CHROMATIC_FC_CODE'], os.environ['CHROMATIC_FC_URL'])}",
101100
])
102101
103-
req = urllib.request.Request(
104-
'https://slack.com/api/chat.postMessage',
105-
data=json.dumps({"channel": channel, "text": message}).encode(),
106-
headers={
107-
'Authorization': f'Bearer {slack_token}',
108-
'Content-Type': 'application/json'
109-
}
110-
)
111-
resp = json.loads(urllib.request.urlopen(req).read())
112-
print("Slack response:", resp.get('ok'), resp.get('error', ''))
113-
if not resp.get('ok'):
114-
raise SystemExit(f"Slack error: {resp.get('error')}")
102+
def post(text, thread_ts=None):
103+
payload = {"channel": channel, "text": text, "unfurl_links": False, "unfurl_media": False}
104+
if thread_ts:
105+
payload["thread_ts"] = thread_ts
106+
req = urllib.request.Request(
107+
'https://slack.com/api/chat.postMessage',
108+
data=json.dumps(payload).encode(),
109+
headers={
110+
'Authorization': f'Bearer {slack_token}',
111+
'Content-Type': 'application/json'
112+
}
113+
)
114+
resp = json.loads(urllib.request.urlopen(req).read())
115+
print("Slack response:", resp.get('ok'), resp.get('error', ''))
116+
if not resp.get('ok'):
117+
raise SystemExit(f"Slack error: {resp.get('error')}")
118+
return resp['message']['ts']
119+
120+
ts = post(f"📸 Weekly Chromatic — {today}")
121+
post(f"📸 Weekly Chromatic — {today}\n\n{body}", thread_ts=ts)
115122
PYEOF

0 commit comments

Comments
 (0)