Index: pyenvjasmine/runner.py
===================================================================
--- pyenvjasmine/runner.py	(revision 25)
+++ pyenvjasmine/runner.py	(revision 30)
@@ -72,6 +72,6 @@
 
     while True:
-        output = p.stdout.readline(1)
-        if output == '' and p.poll() is not None:
+        output = p.stdout.readline(1).decode('utf-8')
+        if output in ['', b''] and p.poll() is not None:
             break
         if output == '\n':
Index: pyenvjasmine/tests/test_runner.py
===================================================================
--- pyenvjasmine/tests/test_runner.py	(revision 26)
+++ pyenvjasmine/tests/test_runner.py	(revision 30)
@@ -14,8 +14,6 @@
         success, stdout = jstests.run()
         assert success
-        # output is the resulting stdout from a subprocess call, which is a
-        # bytes object, hence the b'' for the checks
-        assert b'Failed: 0' in stdout
-        assert b'Passed: 5' in stdout
+        assert 'Failed: 0' in stdout
+        assert 'Passed: 5' in stdout
 
     def test_runner_params(self):
@@ -34,11 +32,9 @@
         success, stdout = jstests.run(spec='tests/specs/test_demo.spec.js')
         lines = stdout.splitlines()
-        # output is the resulting stdout from a subprocess call, which is a
-        # bytes object, hence the b'' in the endswith/startswith calls
-        assert lines[0].endswith(b'specs/test_demo.spec.js')
-        assert lines[1].startswith(b'[  Envjs/1.6 (Rhino;')
-        assert b'Passed: 4' in lines
-        assert b'Failed: 0' in lines
-        assert b'Total : 4' in lines
+        assert lines[0].endswith('specs/test_demo.spec.js')
+        assert lines[1].startswith('[  Envjs/1.6 (Rhino;')
+        assert 'Passed: 4' in lines
+        assert 'Failed: 0' in lines
+        assert 'Total : 4' in lines
 
     def test_write_browser_htmlfile_markup_is_correct(self):
