Merge pull request #243 from tidalcycles/shared-tests

snapshot tests on shared snippets
This commit is contained in:
Felix Roos 2022-11-06 11:05:23 +01:00 committed by GitHub
commit c3d6de2412
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 7002 additions and 1 deletions

View File

@ -113,6 +113,10 @@ export const samples = async (sampleMap, baseUrl = sampleMap._base || '') => {
return;
}
const base = sampleMap.split('/').slice(0, -1).join('/');
if (typeof fetch === 'undefined') {
// skip fetch when in node / testing
return;
}
return fetch(sampleMap)
.then((res) => res.json())
.then((json) => samples(json, baseUrl || json._base || base))

View File

@ -2,6 +2,7 @@
"name": "@strudel.cycles/repl",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --host",
"start": "vite",
@ -12,7 +13,8 @@
"add-license": "cat etc/agpl-header.txt ../docs/static/js/*LICENSE.txt > /tmp/strudel-license.txt && cp /tmp/strudel-license.txt ../docs/static/js/*LICENSE.txt",
"predeploy": "npm run build",
"deploy": "gh-pages -d ../docs",
"static": "npx serve ../docs"
"static": "npx serve ../docs",
"dbdump": "node src/test/dbdump.js > src/test/dbdump.json"
},
"dependencies": {
"@supabase/supabase-js": "^1.35.3",

View File

@ -65,6 +65,7 @@ const toneHelpersMocked = {
Chorus: MockedNode,
Freeverb: MockedNode,
Gain: MockedNode,
Reverb: MockedNode,
vol: mockNode,
out: id,
osc: id,
@ -116,17 +117,40 @@ strudel.Pattern.prototype.adsr = function () {
strudel.Pattern.prototype.out = function () {
return this;
};
strudel.Pattern.prototype.soundfont = function () {
return this;
};
// tune mock
strudel.Pattern.prototype.tune = function () {
return this;
};
strudel.Pattern.prototype.midi = function () {
return this;
};
const uiHelpersMocked = {
backgroundImage: id,
};
prebake({ isMock: true });
const canvasCtx = {
clearRect: () => {},
fillText: () => {},
fillRect: () => {},
canvas: {
width: 100,
height: 100,
},
};
const audioCtx = {
currentTime: 1,
};
const getDrawContext = () => canvasCtx;
const getAudioContext = () => audioCtx;
const loadSoundfont = () => {};
// TODO: refactor to evalScope
evalScope(
// Tone,
@ -146,6 +170,10 @@ evalScope(
// gist,
// euclid,
mini,
getDrawContext,
getAudioContext,
loadSoundfont,
Clock: {}, // whatever
// Tone,
},
);
@ -197,3 +225,6 @@ export const testCycles = {
hyperpop: 10,
festivalOfFingers3: 16,
};
// fixed: https://strudel.tidalcycles.org/?DBp75NUfSxIn (missing .note())
// bug: https://strudel.tidalcycles.org/?xHaKTd1kTpCn + https://strudel.tidalcycles.org/?o5LLePbx8kiQ

File diff suppressed because it is too large Load Diff

10
repl/src/test/dbdump.js Normal file
View File

@ -0,0 +1,10 @@
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
'https://pidxdsxphlhzjnzmifth.supabase.co',
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InBpZHhkc3hwaGxoempuem1pZnRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE2NTYyMzA1NTYsImV4cCI6MTk3MTgwNjU1Nn0.bqlw7802fsWRnqU5BLYtmXk_k-D1VFmbkHMywWc15NM',
);
const { data } = await supabase.from('code');
console.log(JSON.stringify(data));

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,17 @@
import { queryCode } from '../runtime.mjs';
import { describe, it } from 'vitest';
import data from './dbdump.json';
describe('renders shared tunes', async () => {
data.forEach(({ id, code, hash }) => {
const url = `https://strudel.tidalcycles.org/?${hash}`;
it(`shared tune ${id} ${url}`, async ({ expect }) => {
if (code.includes('import(')) {
console.log('skip', url);
return;
}
const haps = await queryCode(code, 1);
expect(haps).toMatchSnapshot();
});
});
});

View File

@ -11,5 +11,13 @@ export default defineConfig({
reporters: 'verbose',
isolate: false,
silent: true,
exclude: [
'**/node_modules/**',
'**/dist/**',
'**/cypress/**',
'**/.{idea,git,cache,output,temp}/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress}.config.*',
'**/shared.test.mjs',
],
},
});