Skip to content

Commit

Permalink
Merge branch 'master' into hot-module-replacement
Browse files Browse the repository at this point in the history
  • Loading branch information
filipenevola committed Mar 18, 2021
2 parents d0d76a3 + a43f702 commit 043b66f
Show file tree
Hide file tree
Showing 16 changed files with 266 additions and 11 deletions.
24 changes: 24 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: 2

jobs:
test app:
docker:
- image: meteor/circleci:android-28-node-12
steps:
- checkout
- run:
name: "Install Meteor"
command: |
curl https://install.meteor.com/ | sh
- run:
name: "Run Tests"
command: |
cd test-app
pwd
./ci.sh
workflows:
version: 2
Blaze Tests:
jobs:
- test app
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ Thumbs.db
db.json
*.log
.idea
test-app/packages
node_modules
package-lock.json
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "tests/test-runner"]
path = tests/test-runner
url = https://github.com/tozd/meteor-test-runner.git
[submodule "site/themes/meteor"]
path = site/themes/meteor
url = https://github.com/meteor/hexo-theme-meteor.git
25 changes: 24 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,27 @@ ln -s /home/user/projects/blaze/packages/blaze-html-templates packages/
...
```

And so on for all the packages.
### Run local tests

The `test-app` folder contains a bare Meteor project you can utilize for local
testing. In order to run local tests, please setup the project first:

#### Setting up the local test environment

Everything is already prepared in scripts:

```bash
$ cd test-app
$ meteor npm install # install dependencies
$ meteor npm run setup # create link to packages
```

This has to be done only once.

#### Run the tests

Simply execute the test script:

```bash
$ meteor npm run test:watch
```
19 changes: 19 additions & 0 deletions test-app/.meteor/.finished-upgraders
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This file contains information which helps Meteor properly upgrade your
# app when you run 'meteor update'. You should check it into version control
# with your project.

notices-for-0.9.0
notices-for-0.9.1
0.9.4-platform-file
notices-for-facebook-graph-api-2
1.2.0-standard-minifiers-package
1.2.0-meteor-platform-split
1.2.0-cordova-changes
1.2.0-breaking-changes
1.3.0-split-minifiers-package
1.4.0-remove-old-dev-bundle-link
1.4.1-add-shell-server-package
1.4.3-split-account-service-packages
1.5-add-dynamic-import-package
1.7-split-underscore-from-meteor-base
1.8.3-split-jquery-from-blaze
1 change: 1 addition & 0 deletions test-app/.meteor/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
local
7 changes: 7 additions & 0 deletions test-app/.meteor/.id
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# This file contains a token that is unique to your project.
# Check it into your repository along with the rest of this directory.
# It can be used for purposes such as:
# - ensuring you don't accidentally deploy one app on top of another
# - providing package authors with aggregated statistics

ourgjhbe7m.zzee6dwnngho
19 changes: 19 additions & 0 deletions test-app/.meteor/packages
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Meteor packages used by this project, one per line.
# Check this file (and the other files in this directory) into your repository.
#
# 'meteor add' and 'meteor remove' will edit this file for you,
# but you can also edit it by hand.

meteor-base@1.4.0 # Packages every Meteor app needs to have
mobile-experience@1.1.0 # Packages for a great mobile UX
mongo@1.10.1 # The database Meteor supports right now
static-html # Define static page content in .html files
reactive-var@1.0.11 # Reactive variable for tracker
tracker@1.2.0 # Meteor's client-side reactive programming library

standard-minifier-css@1.7.2 # CSS minifier run for production mode
standard-minifier-js@2.6.0 # JS minifier run for production mode
es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers
ecmascript@0.15.0 # Enable ECMAScript2015+ syntax in app code
typescript@4.1.2 # Enable TypeScript syntax in .ts and .tsx modules
shell-server@0.5.0 # Server-side component of the `meteor shell` command
2 changes: 2 additions & 0 deletions test-app/.meteor/platforms
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
server
browser
1 change: 1 addition & 0 deletions test-app/.meteor/release
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
METEOR@2.1
70 changes: 70 additions & 0 deletions test-app/.meteor/versions
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
allow-deny@1.1.0
autoupdate@1.7.0
babel-compiler@7.6.0
babel-runtime@1.5.0
base64@1.0.12
binary-heap@1.0.11
blaze-tools@1.0.10
boilerplate-generator@1.7.1
caching-compiler@1.2.2
caching-html-compiler@1.1.3
callback-hook@1.3.0
check@1.3.1
ddp@1.4.0
ddp-client@2.4.0
ddp-common@1.4.0
ddp-server@2.3.2
deps@1.0.12
diff-sequence@1.1.1
dynamic-import@0.6.0
ecmascript@0.15.0
ecmascript-runtime@0.7.0
ecmascript-runtime-client@0.11.0
ecmascript-runtime-server@0.10.0
ejson@1.1.1
es5-shim@4.8.0
fetch@0.1.1
geojson-utils@1.0.10
hot-code-push@1.0.4
html-tools@1.0.11
htmljs@1.0.11
id-map@1.1.0
inter-process-messaging@0.1.1
launch-screen@1.2.0
livedata@1.0.18
logging@1.2.0
meteor@1.9.3
meteor-base@1.4.0
minifier-css@1.5.3
minifier-js@2.6.0
minimongo@1.6.1
mobile-experience@1.1.0
mobile-status-bar@1.1.0
modern-browsers@0.1.5
modules@0.16.0
modules-runtime@0.12.0
mongo@1.10.1
mongo-decimal@0.1.2
mongo-dev-server@1.1.0
mongo-id@1.0.7
npm-mongo@3.8.1
ordered-dict@1.1.0
promise@0.11.2
random@1.2.0
react-fast-refresh@0.1.0
reactive-var@1.0.11
reload@1.3.1
retry@1.1.0
routepolicy@1.1.0
shell-server@0.5.0
socket-stream-client@0.3.1
spacebars-compiler@1.1.3
standard-minifier-css@1.7.2
standard-minifier-js@2.6.0
static-html@1.2.2
templating-tools@1.1.2
tracker@1.2.0
typescript@4.1.2
underscore@1.0.10
webapp@1.10.0
webapp-hashing@1.1.0
18 changes: 18 additions & 0 deletions test-app/ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/usr/bin/env bash

ln -sfn ../packages ./packages
meteor npm install

export URL='http://localhost:4096/'

exec 3< <(meteor test-packages --driver-package test-in-console -p 4096 --exclude ${TEST_PACKAGES_EXCLUDE:-''})
EXEC_PID=$!

sed '/test-in-console listening$/q' <&3

meteor node puppeteerRunner.js

STATUS=$?

pkill -TERM -P $EXEC_PID
exit $STATUS
13 changes: 8 additions & 5 deletions test-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@
"test": "tests"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"start": "meteor run",
"setup": "ln -sfn ../packages ./packages",
"test:watch": "meteor test-packages --raw-logs ./packages/*",
"test:ci": "ci.sh"
},
"author": "",
"license": "ISC",
"license": "MIT",
"dependencies": {
"jquery": "^3.4.1",
"@babel/runtime": "^7.6.0",
"meteor-node-stubs": "^1.0.0"
"@babel/runtime": "^7.13.10",
"meteor-node-stubs": "^1.0.2",
"puppeteer": "^8.0.0"
}
}
70 changes: 70 additions & 0 deletions test-app/puppeteerRunner.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
const puppeteer = require('puppeteer');

async function runNextUrl(browser) {
const page = await browser.newPage();

page.on('console', msg => {
console.log(msg._text);
});

if (!process.env.URL) {
process.exit(1);
return;
}

await page.goto(process.env.URL);

async function poll() {
if (await isDone(page)) {
let failCount = await getFailCount(page);
if (failCount > 0) {
await page.close();
await browser.close();
process.exit(1);
} else {
await page.close();
await browser.close();
process.exit(0);
}
} else {
setTimeout(poll, 1000);
}
}

poll();
}

async function isDone(page) {
return await page.evaluate(function() {
if (typeof TEST_STATUS !== 'undefined') {
return TEST_STATUS.DONE;
}

return typeof DONE !== 'undefined' && DONE;
});
}

async function getFailCount(page) {
return await page.evaluate(function() {
if (typeof TEST_STATUS !== 'undefined') {
return TEST_STATUS.FAILURES;
}

if (typeof FAILURES === 'undefined') {
return 1;
}

return 0;
});
}

async function runTests() {
console.log(`Running test with Puppeteer at ${process.env.URL}`);

// --no-sandbox and --disable-setuid-sandbox must be disabled for CI compatibility
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
console.log(`Using version: ${await browser.version()}`);
runNextUrl(browser);
}

runTests();
1 change: 0 additions & 1 deletion tests/README.md

This file was deleted.

1 change: 0 additions & 1 deletion tests/test-runner
Submodule test-runner deleted from 04cc86

0 comments on commit 043b66f

Please sign in to comment.