#include <bits/stdc++.h>
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
using namespace std;
long long int i, j, a, k, b, c, n, t = 1, m, p, q, d, e, f, y, g, z, h, r, l, x,
                                   u, o;
long double aa, bb, ee, dd, ff, kk, gg, cc;
vector<long long int> v[100006], s(100005), vv;
vector<string> ss, pp;
map<long long int, long long int> ta, pa, sa, ma;
map<long long int, pair<long long int, long long int> > me, he, mem;
map<string, long long int> se;
priority_queue<long long int> aq, tq, pq, nq, mq, xq;
string st, et, ft, pt, ct;
deque<long long int> de, ne;
set<long long int> li, si;
char ch[55][55];
long long int vis[55][55];
long long int dx[] = {-1, 1, 0, 0, -1, -1, 1, 1};
long long int dy[] = {0, 0, -1, 1, -1, 1, -1, 1};
bool val(long long int c, long long int d, long long int n, long long int m) {
  return (c >= 0 && c < n && d >= 0 && d < m && vis[c][d] == 0);
}
void bfs(long long int a, long long int b, long long int n, long long int m) {
  queue<pair<long long int, long long int> > q;
  pair<long long int, long long int> qu;
  q.push({a, b});
  vis[a][b] = 1;
  while (q.size() != 0) {
    for (long long int i = 0; i < 4; i++) {
      qu = q.front();
      a = qu.first;
      b = qu.second;
      long long int c = a + dx[i];
      long long int d = b + dy[i];
      if (val(c, d, n, m)) {
        if (ch[c][d] != '#') {
          q.push({c, d});
          vis[c][d] = 1;
        }
      }
    }
    q.pop();
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> t;
  while (t--) {
    cin >> n >> m;
    memset(vis, 0, sizeof vis);
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        cin >> ch[i][j];
      }
    }
    f = 0;
    e = 0;
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (ch[i][j] == 'B') {
          for (k = 0; k < 4; k++) {
            c = i + dx[k];
            d = j + dy[k];
            if (val(c, d, n, m)) {
              if (ch[c][d] == 'G')
                f = 1;
              else if (ch[d][d] != 'B')
                ch[c][d] = '#';
            }
          }
        } else if (ch[i][j] == 'G')
          e++;
      }
    }
    if (f == 1)
      cout << "No" << endl;
    else {
      f = 0;
      if (ch[n - 1][m - 1] == '#')
        f = 1;
      else
        bfs(n - 1, m - 1, n, m);
      for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
          if (ch[i][j] == 'G') {
            if (vis[i][j] == 0) {
              f = 1;
              break;
            }
          }
        }
      }
      if (f == 1 && e > 0)
        cout << "No" << endl;
      else
        cout << "Yes" << endl;
    }
  }
};
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
