diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..e028aba5a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,28 @@ +name: Test +on: + push: + branches: [master] + pull_request: + branches: [master] +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup minio + run: | + docker run -d -p 9000:9000 --name minio \ + -e "MINIO_ACCESS_KEY=minioadmin" \ + -e "MINIO_SECRET_KEY=minioadmin" \ + -v /tmp/data:/data \ + -v /tmp/config:/root/.minio \ + minio/minio server /data + export AWS_ACCESS_KEY_ID=minioadmin + export AWS_SECRET_ACCESS_KEY=minioadmin + export AWS_EC2_METADATA_DISABLED=true + aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket + - name: Test npm run test + run: | + npm ci + npx playwright install + npm run test \ No newline at end of file diff --git a/Jakefile.js b/Jakefile.js index 0bdc535cb..ec2ca462b 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -86,6 +86,7 @@ var dirmode = 0755, path.join(src, 'README.md'), path.join(src, 'composer.json'), path.join(src, 'elfinder.html'), + path.join(src, 'test.html'), path.join(src, 'index.html'), path.join(src, 'elfinder.legacy.html'), path.join(src, 'main.default.js') diff --git a/e2e.test.js b/e2e.test.js new file mode 100644 index 000000000..32e469c5b --- /dev/null +++ b/e2e.test.js @@ -0,0 +1,15 @@ +const { test, expect } = require('@playwright/test'); + +test('can interact with elFinder in imjoy', async ({ page }) => { + await page.goto('http://localhost:4000/test.html'); // replace with your test page + await page.waitForSelector("report-1") + // obtain the window.api object in the page + const api = await page.evaluateHandle(() => window.api); + // call the createWindow method + const fm = await api.evaluateHandle((api) => api.createWindow({src:"http://localhost:4000"})); + // call the show method + await api.evaluate((fm) => fm.show(), fm); + // call the mount method + await api.evaluate((fm) => fm.mount("s3://minioadmin:minioadmin@localhost:9000/testbucket"), fm); + // call the get method +}); diff --git a/package-lock.json b/package-lock.json index 12140b793..b77a6e0f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ }, "devDependencies": { "@babel/preset-env": "^7.22.5", + "@playwright/test": "^1.35.1", "babel-loader": "^8.3.0", "copy-webpack-plugin": "^6.2.1", "csso": "<2.0.0", @@ -3135,6 +3136,25 @@ "node": ">=10" } }, + "node_modules/@playwright/test": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", + "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "playwright-core": "1.35.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, "node_modules/@smithy/abort-controller": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.1.tgz", @@ -7406,6 +7426,18 @@ "node": ">=8" } }, + "node_modules/playwright-core": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", + "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/pngjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", @@ -11661,6 +11693,17 @@ "rimraf": "^3.0.2" } }, + "@playwright/test": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.35.1.tgz", + "integrity": "sha512-b5YoFe6J9exsMYg0pQAobNDR85T1nLumUYgUTtKm4d21iX2L7WqKq9dW8NGJ+2vX0etZd+Y7UeuqsxDXm9+5ZA==", + "dev": true, + "requires": { + "@types/node": "*", + "fsevents": "2.3.2", + "playwright-core": "1.35.1" + } + }, "@smithy/abort-controller": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-1.0.1.tgz", @@ -14940,6 +14983,12 @@ "find-up": "^4.0.0" } }, + "playwright-core": { + "version": "1.35.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.35.1.tgz", + "integrity": "sha512-pNXb6CQ7OqmGDRspEjlxE49w+4YtR6a3X6mT1hZXeJHWmsEz7SunmvZeiG/+y1yyMZdHnnn73WKYdtV1er0Xyg==", + "dev": true + }, "pngjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", diff --git a/package.json b/package.json index d93a167a5..e457878ae 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "main": "Jakefile.js", "scripts": { "build": "mkdir -p ./elfinder_client && rm -rf ./elfinder_client/* && jake -C ./elfinder_client elfinder && webpack --config webpack.config.js --mode production --progress", - "serve": "mkdir -p ./elfinder_client && rm -rf ./elfinder_client/* && jake -C ./elfinder_client elfinder && webpack serve --config webpack.config.js --mode development --progress --hot" + "serve": "mkdir -p ./elfinder_client && rm -rf ./elfinder_client/* && jake -C ./elfinder_client elfinder && webpack serve --config webpack.config.js --mode development --progress --hot", + "test": "npx playwright test --config playwright-config.js", + "test-serve": "npx playwright test" }, "repository": { "type": "git", @@ -28,6 +30,7 @@ "homepage": "http://studio-42.github.io/elFinder/", "devDependencies": { "@babel/preset-env": "^7.22.5", + "@playwright/test": "^1.35.1", "babel-loader": "^8.3.0", "copy-webpack-plugin": "^6.2.1", "csso": "<2.0.0", diff --git a/playwright-config.js b/playwright-config.js new file mode 100644 index 000000000..f52bedf57 --- /dev/null +++ b/playwright-config.js @@ -0,0 +1,9 @@ +// playwright.config.js +module.exports = { + webServer: { + command: 'npm run serve', // use your existing serve command + port: 4000, + timeout: 120 * 1000, + }, + }; + \ No newline at end of file diff --git a/test.html b/test.html new file mode 100644 index 000000000..9eb221813 --- /dev/null +++ b/test.html @@ -0,0 +1,93 @@ + + + + +
+