#include <bits/stdc++.h>
using namespace std;
const long long INF = 10e10;
long long vis[50][50];
char b[50][50];
void dfs(long long i, long long j, long long n, long long m) {
  vis[i][j] = 1;
  if (i + 1 < n && i + 1 >= 0 && j < m && j >= 0) {
    if (!vis[i + 1][j] && b[i + 1][j] == '.') {
      dfs(i + 1, j, n, m);
    }
  }
  if (i - 1 < n && i - 1 >= 0 && j < m && j >= 0) {
    if (!vis[i - 1][j] && b[i - 1][j] == '.') {
      dfs(i - 1, j, n, m);
    }
  }
  if (i < n && i >= 0 && j + 1 < m && j + 1 >= 0) {
    if (!vis[i][j + 1] && b[i][j + 1] == '.') {
      dfs(i, j + 1, n, m);
    }
  }
  if (i < n && i >= 0 && j - 1 < m && j - 1 >= 0) {
    if (!vis[i][j - 1] && b[i][j - 1] == '.') {
      dfs(i, j - 1, n, m);
    }
  }
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t;
  cin >> t;
  while (t--) {
    for (long long i = 0; i < 50; i++) {
      for (long long j = 0; j < 50; j++) {
        vis[i][j] = 0;
      }
    }
    long long n, m;
    cin >> n >> m;
    long long g_cnt = 0;
    char a[n][m];
    long long cnt_g = 0;
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) {
        cin >> a[i][j];
        b[i][j] = a[i][j];
        if (b[i][j] == 'B' || b[i][j] == 'G') {
          b[i][j] = '.';
        }
        if (a[i][j] == 'G') {
          g_cnt++;
        }
      }
    }
    bool poss = true;
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) {
        if (a[i][j] == 'B') {
          b[i][j] = '#';
          if (i + 1 < n && i + 1 >= 0 && j < m && j >= 0) {
            b[i + 1][j] = '#';
          }
          if (i - 1 < n && i - 1 >= 0 && j < m && j >= 0) {
            b[i - 1][j] = '#';
          }
          if (i < n && i >= 0 && j + 1 < m && j + 1 >= 0) {
            b[i][j + 1] = '#';
          }
          if (i < n && i >= 0 && j - 1 < m && j - 1 >= 0) {
            b[i][j - 1] = '#';
          }
        }
      }
    }
    dfs(n - 1, m - 1, n, m);
    for (long long i = 0; i < n; i++) {
      for (long long j = 0; j < m; j++) {
        if (a[i][j] == 'G') {
          if (vis[i][j] != 1) {
            poss = false;
          }
        }
      }
    }
    if (b[n - 1][m - 1] == '#' && g_cnt > 0) {
      poss = false;
    }
    if (poss) {
      cout << "Yes" << endl;
    } else {
      cout << "No" << endl;
    }
  }
  return 0;
}
