#include <bits/stdc++.h>
#pragma GCC optimize(3, "Ofast", "inline")
using namespace std;
namespace FastIO {
char print_f[105];
void read() {}
void print() { putchar('\n'); }
template <typename T, typename... T2>
inline void read(T &x, T2 &...oth) {
  x = 0;
  char ch = getchar();
  long long f = 1;
  while (!isdigit(ch)) {
    if (ch == '-') f *= -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  x *= f;
  read(oth...);
}
template <typename T, typename... T2>
inline void print(T x, T2... oth) {
  long long p3 = -1;
  if (x < 0) putchar('-'), x = -x;
  do {
    print_f[++p3] = x % 10 + 48;
  } while (x /= 10);
  while (p3 >= 0) putchar(print_f[p3--]);
  putchar(' ');
  print(oth...);
}
}  // namespace FastIO
using FastIO::print;
using FastIO::read;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 5;
char s[105][105];
int fx[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};
bool vis[55][55];
int n, m;
bool check(int x, int y) {
  if (x <= n && y <= m && x >= 1 && y >= 1 && s[x][y] != '#') return 1;
  return 0;
}
int bfs(int good) {
  queue<pair<int, int> > q;
  if (s[n][m] == 'B' || (good && s[n][m] == '#')) return 0;
  q.push({n, m});
  vis[n][m] = 1;
  while (q.size()) {
    auto u = q.front();
    q.pop();
    if (s[u.first][u.second] == 'B') return 0;
    for (int i = 0; i < 4; i++) {
      int xx = u.first + fx[i][0];
      int yy = u.second + fx[i][1];
      if (check(xx, yy) && !vis[xx][yy]) {
        q.push({xx, yy});
        vis[xx][yy] = 1;
      }
    }
  }
  return 1;
}
int main() {
  int T;
  read(T);
  while (T--) {
    memset(vis, 0, sizeof(vis));
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> (s[i] + 1);
    int ok = 1, good = 0;
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (s[i][j] == 'G') good = 1;
        if (s[i][j] == 'B') {
          for (int k = 0; k < 4; k++) {
            int xx = i + fx[k][0];
            int yy = j + fx[k][1];
            if (check(xx, yy)) {
              if (s[xx][yy] == 'G')
                ok = 0;
              else
                s[xx][yy] = '#';
            }
          }
        }
      }
    }
    if (!good) {
      cout << "Yes\n";
      continue;
    }
    if (!ok) {
      cout << "No\n";
      continue;
    }
    if (bfs(good))
      cout << "Yes\n";
    else
      cout << "No\n";
  }
  return 0;
}
