diff --git a/js_ngx.t b/js_ngx.t
new file mode 100644
index 0000000..38fda3b
--- /dev/null
+++ b/js_ngx.t
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+
+# (C) Dmitry Volyntsev
+# (C) Nginx, Inc.
+
+# Tests for http njs module, ngx object.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Test::More;
+
+BEGIN { use FindBin; chdir($FindBin::Bin); }
+
+use lib 'lib';
+use Test::Nginx;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()->has(qw/http/)
+	->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+daemon off;
+
+events {
+}
+
+http {
+    %%TEST_GLOBALS_HTTP%%
+
+    js_import test.js;
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  localhost;
+
+        location /log {
+            js_content test.log;
+        }
+    }
+}
+
+EOF
+
+$t->write_file('test.js', <<EOF);
+    function level(r) {
+        switch (r.args.level) {
+        case 'INFO': return ngx.INFO;
+        case 'WARN': return ngx.WARN;
+        case 'ERR': return ngx.ERR;
+        default:
+            throw Error(`Unknown log level:"\${r.args.level}"`);
+        }
+    }
+
+    function log(r) {
+        ngx.log(level(r), `ngx.log:\${r.args.text}`);
+        r.return(200);
+    }
+
+    export default {log};
+
+EOF
+
+$t->try_run('no njs ngx')->plan(3);
+
+###############################################################################
+
+http_get('/log?level=INFO&text=FOO');
+http_get('/log?level=WARN&text=BAR');
+http_get('/log?level=ERR&text=BAZ');
+
+$t->stop();
+
+like($t->read_file('error.log'), qr/\[info\].*ngx.log:FOO/, 'ngx.log info');
+like($t->read_file('error.log'), qr/\[warn\].*ngx.log:BAR/, 'ngx.log warn');
+like($t->read_file('error.log'), qr/\[error\].*ngx.log:BAZ/, 'ngx.log err');
+
+###############################################################################
diff --git a/stream_js_ngx.t b/stream_js_ngx.t
new file mode 100644
index 0000000..3092d8d
--- /dev/null
+++ b/stream_js_ngx.t
@@ -0,0 +1,73 @@
+#!/usr/bin/perl
+
+# (C) Dmitry Volyntsev
+# (C) Nginx, Inc.
+
+# Tests for stream njs module, ngx object.
+
+###############################################################################
+
+use warnings;
+use strict;
+
+use Test::More;
+
+BEGIN { use FindBin; chdir($FindBin::Bin); }
+
+use lib 'lib';
+use Test::Nginx;
+use Test::Nginx::Stream qw/ stream /;
+
+###############################################################################
+
+select STDERR; $| = 1;
+select STDOUT; $| = 1;
+
+my $t = Test::Nginx->new()->has(qw/stream stream_return/)
+	->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+daemon off;
+
+events {
+}
+
+stream {
+    js_import test.js;
+
+    js_set $log     test.log;
+
+    server {
+        listen  127.0.0.1:8081;
+        return  $log;
+    }
+}
+
+EOF
+
+$t->write_file('test.js', <<EOF);
+    function log(s) {
+        ngx.log(ngx.INFO, `ngx.log:FOO`);
+        ngx.log(ngx.WARN, `ngx.log:BAR`);
+        ngx.log(ngx.ERR, `ngx.log:BAZ`);
+        return 'OK';
+    }
+
+    export default {log};
+
+EOF
+
+$t->try_run('no njs ngx')->plan(4);
+
+###############################################################################
+
+is(stream('127.0.0.1:' . port(8081))->read(), 'OK', 'log var');
+
+$t->stop();
+
+like($t->read_file('error.log'), qr/\[info\].*ngx.log:FOO/, 'ngx.log info');
+like($t->read_file('error.log'), qr/\[warn\].*ngx.log:BAR/, 'ngx.log warn');
+like($t->read_file('error.log'), qr/\[error\].*ngx.log:BAZ/, 'ngx.log err');
+
+###############################################################################
