Add carousel Slack alerts for nightly Maestro failures (#11645)
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import assert from 'node:assert/strict'
|
||||
import fs from 'node:fs'
|
||||
import os from 'node:os'
|
||||
import path from 'node:path'
|
||||
import test from 'node:test'
|
||||
|
||||
import sharp from 'sharp'
|
||||
|
||||
import {frameSlackScreenshots} from './frame-slack-screenshots.mjs'
|
||||
|
||||
test('frames Slack screenshots as 4:3 PNGs', async t => {
|
||||
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'maestro-slack-frame-'))
|
||||
t.after(() => fs.rmSync(root, {recursive: true, force: true}))
|
||||
const source = path.join(root, 'source.png')
|
||||
const input = path.join(root, 'input.json')
|
||||
const output = path.join(root, 'output.json')
|
||||
const outputDir = path.join(root, 'images')
|
||||
await sharp({
|
||||
create: {
|
||||
width: 2,
|
||||
height: 4,
|
||||
channels: 3,
|
||||
background: '#ffffff',
|
||||
},
|
||||
})
|
||||
.png()
|
||||
.toFile(source)
|
||||
fs.writeFileSync(
|
||||
input,
|
||||
JSON.stringify({
|
||||
file_uploads: [
|
||||
{
|
||||
file: source,
|
||||
filename: '1-android-login.png',
|
||||
alt_text: 'Android failure screenshot for login',
|
||||
},
|
||||
],
|
||||
}),
|
||||
)
|
||||
|
||||
await frameSlackScreenshots({inputPath: input, outputPath: output, outputDir})
|
||||
|
||||
const payload = JSON.parse(fs.readFileSync(output, 'utf8'))
|
||||
const {data, info} = await sharp(payload.file_uploads[0].file)
|
||||
.raw()
|
||||
.toBuffer({resolveWithObject: true})
|
||||
const pixelAt = (x, y) => {
|
||||
const offset = (y * info.width + x) * info.channels
|
||||
return Array.from(data.subarray(offset, offset + 3))
|
||||
}
|
||||
|
||||
assert.equal(info.width, 1600)
|
||||
assert.equal(info.height, 1200)
|
||||
assert.deepEqual(pixelAt(0, 0), [248, 248, 248])
|
||||
assert.deepEqual(pixelAt(800, 600), [255, 255, 255])
|
||||
assert.equal(payload.file_uploads[0].filename, '1-android-login.png')
|
||||
assert.equal(payload.file_uploads[0].highlight_type, 'png')
|
||||
})
|
||||
Reference in New Issue
Block a user