diff --git a/test/horz_superres_test.cc b/test/horz_superres_test.cc
index 2239431b..c1ba7f5 100644
--- a/test/horz_superres_test.cc
+++ b/test/horz_superres_test.cc
@@ -28,12 +28,12 @@
 
 /* TESTING PARAMETERS */
 
-#define NUM_TEST_VIDEOS 3
+#define NUM_TEST_VIDEOS 4
 
 const int kBitrate = 40;
 
 // PSNR thresholds found by experiment
-const double kPSNRThresholds[] = { 26.0, 28.0, 20.0 };
+const double kPSNRThresholds[] = { 26.0, 28.0, 20.0, 39.0 };
 
 typedef struct {
   const char *filename;
@@ -48,16 +48,12 @@
   { "park_joy_90p_8_420.y4m", AOM_IMG_FMT_I420, AOM_BITS_8, 0, 5, 0 },
   { "park_joy_90p_10_444.y4m", AOM_IMG_FMT_I44416, AOM_BITS_10, 1, 5, 0 },
   { "screendata.y4m", AOM_IMG_FMT_I420, AOM_BITS_8, 0, 4, 1 },
+  { "niklas_1280_720_30.y4m", AOM_IMG_FMT_I420, AOM_BITS_8, 0, 1, 0 },  // image
 };
 
-// TODO(urvang): Add separate tests for SUPERRES_AUTO and SUPERRES_RANDOM,
-// as they don't use the denoms. SUPERRES_QTHRESH tests should also not use the
-// denominators.
-// SUPERRES_QTHRESH is not included, as it has its own test
-const SUPERRES_MODE kSuperresModesNotQThresh[] = {
-  SUPERRES_FIXED,
-  SUPERRES_RANDOM,
-};
+// Modes with extra params have their own tests.
+const SUPERRES_MODE kSuperresModesWithoutParams[] = { SUPERRES_RANDOM,
+                                                      SUPERRES_AUTO };
 
 // Superres denominators and superres kf denominators to be tested
 typedef tuple<int, int> SuperresDenominatorPair;
@@ -78,10 +74,8 @@
 /* END (TESTING PARAMETERS) */
 
 // Test parameter list:
-//  <[needed for EncoderTest], test_video_idx_, superres_mode_,
-//  tuple(superres_denom_, superres_kf_denom_)>
-typedef tuple<const libaom_test::CodecFactory *, int, SUPERRES_MODE,
-              SuperresDenominatorPair>
+//  <[needed for EncoderTest], test_video_idx_, superres_mode_>
+typedef tuple<const libaom_test::CodecFactory *, int, SUPERRES_MODE>
     HorzSuperresTestParam;
 
 class HorzSuperresEndToEndTest
@@ -92,13 +86,116 @@
       : EncoderTest(GET_PARAM(0)), test_video_idx_(GET_PARAM(1)),
         superres_mode_(GET_PARAM(2)), psnr_(0.0), frame_count_(0) {
     test_video_param_ = kTestVideoVectors[test_video_idx_];
+  }
 
-    SuperresDenominatorPair denoms = GET_PARAM(3);
+  virtual ~HorzSuperresEndToEndTest() {}
+
+  virtual void SetUp() {
+    InitializeConfig();
+    SetMode(::libaom_test::kTwoPassGood);
+    cfg_.g_lag_in_frames = 5;
+    cfg_.rc_end_usage = AOM_Q;
+    cfg_.rc_target_bitrate = kBitrate;
+    cfg_.g_error_resilient = 0;
+    cfg_.g_profile = test_video_param_.profile;
+    cfg_.g_input_bit_depth = (unsigned int)test_video_param_.bit_depth;
+    cfg_.g_bit_depth = test_video_param_.bit_depth;
+    init_flags_ = AOM_CODEC_USE_PSNR;
+    if (cfg_.g_bit_depth > 8) init_flags_ |= AOM_CODEC_USE_HIGHBITDEPTH;
+
+    // Set superres parameters
+    cfg_.rc_superres_mode = superres_mode_;
+  }
+
+  virtual void BeginPassHook(unsigned int) {
+    psnr_ = 0.0;
+    frame_count_ = 0;
+  }
+
+  virtual void PSNRPktHook(const aom_codec_cx_pkt_t *pkt) {
+    psnr_ += pkt->data.psnr.psnr[0];
+    frame_count_++;
+  }
+
+  virtual void PreEncodeFrameHook(::libaom_test::VideoSource *video,
+                                  ::libaom_test::Encoder *encoder) {
+    if (video->frame() == 0) {
+      encoder->Control(AV1E_SET_FRAME_PARALLEL_DECODING, 1);
+      encoder->Control(AV1E_SET_TILE_COLUMNS, 4);
+
+      // Set cpu-used = 8 for speed
+      encoder->Control(AOME_SET_CPUUSED, 8);
+
+      // Test screen coding tools
+      if (test_video_param_.screen_content)
+        encoder->Control(AV1E_SET_TUNE_CONTENT, AOM_CONTENT_SCREEN);
+      else
+        encoder->Control(AV1E_SET_TUNE_CONTENT, AOM_CONTENT_DEFAULT);
+
+      encoder->Control(AOME_SET_ENABLEAUTOALTREF, 1);
+      encoder->Control(AOME_SET_ARNR_MAXFRAMES, 7);
+      encoder->Control(AOME_SET_ARNR_STRENGTH, 5);
+    }
+  }
+
+  double GetAveragePsnr() const {
+    if (frame_count_) return psnr_ / frame_count_;
+    return 0.0;
+  }
+
+  double GetPsnrThreshold() { return kPSNRThresholds[test_video_idx_]; }
+
+  void DoTest() {
+    std::unique_ptr<libaom_test::VideoSource> video;
+    video.reset(new libaom_test::Y4mVideoSource(test_video_param_.filename, 0,
+                                                test_video_param_.limit));
+    ASSERT_TRUE(video.get() != NULL);
+
+    ASSERT_NO_FATAL_FAILURE(RunLoop(video.get()));
+    const double psnr = GetAveragePsnr();
+    EXPECT_GT(psnr, GetPsnrThreshold())
+        << "superres_mode_ = " << superres_mode_;
+
+    EXPECT_EQ(test_video_param_.limit, frame_count_)
+        << "superres_mode_ = " << superres_mode_;
+  }
+
+  int test_video_idx_;
+  TestVideoParam test_video_param_;
+  SUPERRES_MODE superres_mode_;
+
+ private:
+  double psnr_;
+  unsigned int frame_count_;
+};
+
+TEST_P(HorzSuperresEndToEndTest, HorzSuperresEndToEndPSNRTest) { DoTest(); }
+
+AV1_INSTANTIATE_TEST_CASE(HorzSuperresEndToEndTest,
+                          ::testing::Range(0, NUM_TEST_VIDEOS),
+                          ::testing::ValuesIn(kSuperresModesWithoutParams));
+
+// Test parameter list:
+//  <[needed for EncoderTest], test_video_idx_, tuple(superres_denom_,
+//  superres_kf_denom_)>
+typedef tuple<const libaom_test::CodecFactory *, int, SuperresDenominatorPair>
+    HorzSuperresFixedTestParam;
+
+class HorzSuperresFixedEndToEndTest
+    : public ::testing::TestWithParam<HorzSuperresFixedTestParam>,
+      public ::libaom_test::EncoderTest {
+ protected:
+  HorzSuperresFixedEndToEndTest()
+      : EncoderTest(GET_PARAM(0)), test_video_idx_(GET_PARAM(1)),
+        superres_mode_(SUPERRES_FIXED), psnr_(0.0), frame_count_(0) {
+    test_video_param_ = kTestVideoVectors[test_video_idx_];
+
+    SuperresDenominatorPair denoms = GET_PARAM(2);
     superres_denom_ = ::testing::get<0>(denoms);
     superres_kf_denom_ = ::testing::get<1>(denoms);
   }
 
-  virtual ~HorzSuperresEndToEndTest() {}
+  virtual ~HorzSuperresFixedEndToEndTest() {}
 
   virtual void SetUp() {
     InitializeConfig();
@@ -187,18 +284,16 @@
   unsigned int frame_count_;
 };
 
-TEST_P(HorzSuperresEndToEndTest, HorzSuperresEndToEndPSNRTest) { DoTest(); }
+TEST_P(HorzSuperresFixedEndToEndTest, HorzSuperresFixedTestParam) { DoTest(); }
 
-AV1_INSTANTIATE_TEST_CASE(HorzSuperresEndToEndTest,
+AV1_INSTANTIATE_TEST_CASE(HorzSuperresFixedEndToEndTest,
                           ::testing::Range(0, NUM_TEST_VIDEOS),
-                          ::testing::ValuesIn(kSuperresModesNotQThresh),
                           ::testing::ValuesIn(kSuperresDenominators));
 
 // Test parameter list:
-//  <[needed for EncoderTest], test_video_idx_, tuple(superres_denom_,
-//  superres_kf_denom_), tuple(superres_qthresh_,superres_kf_qthresh_)>
-typedef tuple<const libaom_test::CodecFactory *, int, SuperresDenominatorPair,
-              SuperresQThresholdPair>
+//  <[needed for EncoderTest], test_video_idx_,
+//  tuple(superres_qthresh_,superres_kf_qthresh_)>
+typedef tuple<const libaom_test::CodecFactory *, int, SuperresQThresholdPair>
     HorzSuperresQThreshTestParam;
 
 class HorzSuperresQThreshEndToEndTest
@@ -210,11 +305,7 @@
         superres_mode_(SUPERRES_QTHRESH), psnr_(0.0), frame_count_(0) {
     test_video_param_ = kTestVideoVectors[test_video_idx_];
 
-    SuperresDenominatorPair denoms = GET_PARAM(2);
-    superres_denom_ = ::testing::get<0>(denoms);
-    superres_kf_denom_ = ::testing::get<1>(denoms);
-
-    SuperresQThresholdPair qthresholds = GET_PARAM(3);
+    SuperresQThresholdPair qthresholds = GET_PARAM(2);
     superres_qthresh_ = ::testing::get<0>(qthresholds);
     superres_kf_qthresh_ = ::testing::get<1>(qthresholds);
   }
@@ -236,8 +327,6 @@
 
     // Set superres parameters
     cfg_.rc_superres_mode = superres_mode_;
-    cfg_.rc_superres_denominator = superres_denom_;
-    cfg_.rc_superres_kf_denominator = superres_kf_denom_;
     cfg_.rc_superres_qthresh = superres_qthresh_;
     cfg_.rc_superres_kf_qthresh = superres_kf_qthresh_;
   }
@@ -290,15 +379,11 @@
     const double psnr = GetAveragePsnr();
     EXPECT_GT(psnr, GetPsnrThreshold())
         << "superres_mode_ = " << superres_mode_
-        << ", superres_denom_ = " << superres_denom_
-        << ", superres_kf_denom_ = " << superres_kf_denom_
         << ", superres_qthresh_ = " << superres_qthresh_
         << ", superres_kf_qthresh_ = " << superres_kf_qthresh_;
 
     EXPECT_EQ(test_video_param_.limit, frame_count_)
         << "superres_mode_ = " << superres_mode_
-        << ", superres_denom_ = " << superres_denom_
-        << ", superres_kf_denom_ = " << superres_kf_denom_
         << ", superres_qthresh_ = " << superres_qthresh_
         << ", superres_kf_qthresh_ = " << superres_kf_qthresh_;
   }
@@ -306,8 +391,6 @@
   int test_video_idx_;
   TestVideoParam test_video_param_;
   SUPERRES_MODE superres_mode_;
-  int superres_denom_;
-  int superres_kf_denom_;
   int superres_qthresh_;
   int superres_kf_qthresh_;
 
@@ -322,7 +405,6 @@
 
 AV1_INSTANTIATE_TEST_CASE(HorzSuperresQThreshEndToEndTest,
                           ::testing::Range(0, NUM_TEST_VIDEOS),
-                          ::testing::ValuesIn(kSuperresDenominators),
                           ::testing::ValuesIn(kSuperresQThresholds));
 
 }  // namespace
