Skip to content

Commit

Permalink
override max bytes for e2e tests
Browse files Browse the repository at this point in the history
  • Loading branch information
flotwig committed Aug 6, 2020
1 parent b7302c7 commit 34985b2
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 4 deletions.
4 changes: 2 additions & 2 deletions packages/server/__snapshots__/5_screenshots_spec.js
Expand Up @@ -147,11 +147,11 @@ Because this error occurred during a \`after each\` hook we are skipping the rem
- /XXX/XXX/XXX/cypress/screenshots/screenshots_spec.js/taking screenshots -- reall (1000x660)
y long test title aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.png
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.png
- /XXX/XXX/XXX/cypress/screenshots/screenshots_spec.js/taking screenshots -- reall (1000x660)
y long test title aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (1).png
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa (1).png
(Video)
Expand Down
2 changes: 1 addition & 1 deletion packages/server/lib/screenshots.js
Expand Up @@ -23,7 +23,7 @@ let __ID__ = null
// errors are encountered, `maxSafeBytes` will be decremented to at most `MIN_PREFIX_BYTES`, at
// which point the latest ENAMTOOLONG error will be emitted.
// @see https://en.wikipedia.org/wiki/Comparison_of_file_systems#Limits
let maxSafeBytes = 255
let maxSafeBytes = Number(process.env.CYPRESS_MAX_SAFE_FILENAME_BYTES) || 254
const MIN_PREFIX_BYTES = 64

// TODO: when we parallelize these builds we'll need
Expand Down
2 changes: 2 additions & 0 deletions packages/server/test/support/helpers/e2e.ts
Expand Up @@ -697,6 +697,8 @@ const e2e = {
LINES: 24,
})
.defaults({
// match CircleCI's filesystem limits, so screenshot names in snapshots match
CYPRESS_MAX_SAFE_FILENAME_BYTES: 242,
FAKE_CWD_PATH: '/XXX/XXX/XXX',
DEBUG_COLORS: '1',
// prevent any Compression progress
Expand Down
34 changes: 33 additions & 1 deletion packages/server/test/unit/screenshots_spec.js
Expand Up @@ -577,6 +577,10 @@ describe('lib/screenshots', () => {
})

context('.getPath', () => {
beforeEach(() => {
sinon.stub(fs, 'outputFileAsync').resolves()
})

it('concats spec name, screenshotsFolder, and name', () => {
return screenshots.getPath({
specName: 'examples/user/list.js',
Expand Down Expand Up @@ -624,7 +628,7 @@ describe('lib/screenshots', () => {
titles: [
'WMED: [STORY] Тестовые сценарии для CI',
'Сценарии:',
'Сценарий 2: Создание обращения, создание медзаписи, привязка обращения к медзаписи',
'Сценарий 2: Создание обращения, создание медзаписи, привязкапривязка обращения к медзаписи',
'- Сценарий 2',
],
testFailure: true,
Expand All @@ -636,6 +640,34 @@ describe('lib/screenshots', () => {
expect(Buffer.from(basename).byteLength).to.be.lessThan(255)
})

it('reacts to ENAMETOOLONG errors and tries to shorten the filename', async () => {
const err = new Error('enametoolong')

err.code = 'ENAMETOOLONG'

_.times(50, (i) => fs.outputFileAsync.onCall(i).rejects(err))

const fullPath = await screenshots.getPath({
specName: 'foo.js',
name: 'a'.repeat(256),
}, 'png', '/tmp')

expect(path.basename(fullPath)).to.have.length(204)
})

it('rejects with ENAMETOOLONG errors if name goes below MIN_PREFIX_LENGTH', async () => {
const err = new Error('enametoolong')

err.code = 'ENAMETOOLONG'

_.times(150, (i) => fs.outputFileAsync.onCall(i).rejects(err))

await expect(screenshots.getPath({
specName: 'foo.js',
name: 'a'.repeat(256),
}, 'png', '/tmp')).to.be.rejectedWith(err)
})

_.each([Infinity, 0 / 0, [], {}, 1, false], (value) => {
it(`doesn't err and stringifies non-string test title: ${value}`, () => {
return screenshots.getPath({
Expand Down

0 comments on commit 34985b2

Please sign in to comment.