#include <bits/stdc++.h>
using namespace std;
int t;
int n, m, ans, tot;
string a;
int f[55][55];
char ch;
int dx[] = {0, 1, -1, 0, 0}, dy[] = {0, 0, 0, 1, -1};
bool flag[55][55], biao;
int read() {
  int _ = 0, __ = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') __ = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    _ = _ * 10 + ch - '0';
    ch = getchar();
  }
  return _ * __;
}
void dfs(int x, int y) {
  if (f[x][y] == 3) {
    biao = 1;
    return;
  }
  if (f[x][y] == 2) {
    f[x][y] = 0;
    ans++;
  }
  int ax, ay;
  for (int i = 1; i <= 4; i++) {
    ax = x + dx[i];
    ay = y + dy[i];
    if (ax <= 0 || ax > n || ay <= 0 || ay > m || f[ax][ay] == 1 ||
        flag[ax][ay])
      continue;
    flag[ax][ay] = true;
    dfs(ax, ay);
    if (biao) return;
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  cin >> t;
  while (t--) {
    cin >> n >> m;
    tot = 0;
    ans = 0;
    biao = 0;
    for (int i = 1; i <= n; i++) {
      cin >> a;
      for (int j = 0; j < m; j++) {
        if (a[j] == '#')
          f[i][j + 1] = 1;
        else if (a[j] == 'G')
          f[i][j + 1] = 2, tot++;
        else if (a[j] == 'B')
          f[i][j + 1] = 3;
      }
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (f[i][j] == 3) {
          if (i - 1 > 0 && f[i - 1][j] == 0) f[i - 1][j] = 1;
          if (j - 1 > 0 && f[i][j - 1] == 0) f[i][j - 1] = 1;
          if (i + 1 <= n && f[i + 1][j] == 0) f[i + 1][j] = 1;
          if (j + 1 <= m && f[i][j + 1] == 0) f[i][j + 1] = 1;
        }
      }
    }
    flag[n][m] = true;
    if (f[n][m] != 1) dfs(n, m);
    if (biao)
      cout << "No" << endl;
    else {
      if (ans < tot)
        cout << "No" << endl;
      else
        cout << "Yes" << endl;
    }
    memset(f, 0, sizeof(f));
    memset(flag, 0, sizeof(flag));
  }
  return 0;
}
